diff --git a/framework/core/src/Extend/ViewNamespace.php b/framework/core/src/Extend/ViewNamespace.php new file mode 100644 index 000000000..5f69f52ca --- /dev/null +++ b/framework/core/src/Extend/ViewNamespace.php @@ -0,0 +1,51 @@ +adds[$namespace] = $hints; + + return $this; + } + + public function extend(Container $container, Extension $extension = null) + { + $factory = $container->make(Factory::class); + + foreach ($this->adds as $namespace => $hints) { + $factory->addNamespace($namespace, $hints); + } + } +} diff --git a/framework/core/tests/fixtures/views/test.blade.php b/framework/core/tests/fixtures/views/test.blade.php new file mode 100644 index 000000000..867754346 --- /dev/null +++ b/framework/core/tests/fixtures/views/test.blade.php @@ -0,0 +1 @@ +Hello World! diff --git a/framework/core/tests/integration/extenders/ViewNamespaceTest.php b/framework/core/tests/integration/extenders/ViewNamespaceTest.php new file mode 100644 index 000000000..24d54524b --- /dev/null +++ b/framework/core/tests/integration/extenders/ViewNamespaceTest.php @@ -0,0 +1,39 @@ +expectException(\InvalidArgumentException::class); + $this->app()->getContainer()->make(Factory::class)->make('integration.test::test'); + } + + /** + * @test + */ + public function custom_view_namespace_can_be_added_by_extender() + { + $this->extend( + (new Extend\ViewNamespace) + ->add('integration.test', dirname(__FILE__, 3).'/fixtures/views') + ); + + $this->assertEquals('Hello World!', trim($this->app()->getContainer()->make(Factory::class)->make('integration.test::test')->render())); + } +}