使用laravel刀片组件从不同的文件夹

evrscar2  于 2023-10-22  发布在  其他
关注(0)|答案(2)|浏览(158)

出于某种原因,我把Laravel刀片组件放在App/Core/CoreComponents文件夹中,所以现在我不能像以前那样使用这些组件了:

  1. <x-Core.CoreComponents.input />

在搜索之后,我发现了一种方法,在AppServiceProvidor.php中使用此方法来创建别名

  1. // AppServiceProvidor.php in boot()
  2. Blade::componentNamespace('CoreComponents', 'Core.CoreCoreComponents');
  3. // use the components in blade.php
  4. <x-CoreComponents::input />

但它不起作用,那么有什么方法可以做到这一点呢?这会影响性能吗?(注意,我真的想把它们放在应用程序文件夹中)

hm2xizp9

hm2xizp91#

我的Web应用程序从应用程序/视图中完成其工作。我在Laravel Docs上读到了同样的内容:
app/View/Components目录和resources/views/components目录中自动发现组件,但您可以对软件包的服务提供程序执行此操作:

  1. use Illuminate\Support\Facades\Blade;
  2. use App\Core\CoreComponents\InputComponent; //example
  3. public function boot(): void
  4. {
  5. Blade::component('input', InputComponent::class);
  6. //OR
  7. Blade::anonymousComponentPath(__DIR__.'/../Core/CoreComponents');
  8. //OR the one you discovered already:
  9. Blade::componentNamespace('App\\Core\\CoreComponents', 'Core.CoreComponents'); //hint: <x-Core.CoreComponents::input>
  10. }
wr98u20j

wr98u20j2#

按照https://laravel.com/docs/master/blade#manually-registering-components上的文档操作,我想你有一个错字:

  1. <x-Core.CoreComponents::input />

而不是

  1. <x-Core.CoreComponents.input />

当注册组件namepsace时,你必须使用完整的namespace:

  1. Blade::componentNamespace('App\\Core\\CoreComponents', 'Core.CoreCoreComponents');

相关问题