Relative include paths don't work when using namespaces
uandco opened this issue · 4 comments
Hi,
I'm using a components
view namespace by adding this to AppServiceProvider.php
:
public function boot(): void
{
view()->addNamespace('components', resource_path('droplets/components'));
}
This works fine to call views like view('components::forms/input);
to load /resources/droplets/components/forms/input.twig
but when including other twig templates from input.twig
, I need to use an absolute path to point to anything inside /resources/droplets/components
.
Using something like {% include 'label' with {label: label} %}
will try to load /resources/views/label.twig
as twig is not aware the parent template is in the components namespace.
I reckon a way to solve that would be to declare twig path namespaces like you can do in Symphony:
https://symfony.com/doc/current/templates.html#template-namespaces
What is the equivalent to that with TwigBridge, if any?
Thanks!
Actually I have a workaround by not using namespaces but adding a secondary view path in config/view.php
:
'paths' => [
resource_path('views'),
resource_path('droplets/components'),
],
But being able to use namespaces in Twig would be nice too to have a finer control on where we want the includes to be loaded from.
Checkout (if you haven't) Laravel Modules package. The project has managed to load and include templates from different modules.