【发布时间】:2022-03-30 01:54:50
【问题描述】:
我正在尝试将我的包中的视图链接到同一包中的视图。
这是文件结构:
/report/src
/report/src/ReportServiceProvider.php
/report/src/views/test.blade.php
/report/src/SomeClass.php
在我的ReportServiceProvider.php 中,我指定了应该从中加载视图的目录(如specified here):
public function boot()
{
$this->loadViewsFrom(__DIR__.'/views', 'reports');
}
有了“提示”报告,我应该可以通过view('reports::test') 访问它们
当然,我将我的 ServiceProvider 添加到 /config/app.php 的 providers 数组中,如下所示:
....
Vendor\Report\ReportServiceProvider::class,
....
我在composer中加载我的包如下:
"autoload": {
....
"psr-4": {
"App\\": "app/",
"Vendor\\Report\\": "packages/vendor/report/src"
}
...
}
但是当我在SomeClass.php 中使用view('reports::test') 时,出现以下错误:
没有为 [reports] 定义提示路径
所以不知何故它找不到报告提示...... 我在这里错过了什么?
【问题讨论】:
-
你能在服务器提供者中转储
__DIR__吗? -
嗯,die('something') 不会产生 die,应用程序只是被加载了......所以服务提供者可能没有加载?
-
确实是这样。只是为了确保,在您的服务提供者中创建一个
register方法,然后转储一些东西,看看是否出现,否则它不会加载您的提供者,如果您认为提供者的路径正确,可以尝试composer dump-autoload? -
我一定遗漏了一些东西......我把 defer=false 让它总是加载;在 register() 中一个简单的 die('hello');但什么也没发生 :(
-
你也不应该对自定义包使用自动加载部分,假设在供应商目录中有。