【问题标题】:No hint path defined for [xxx]没有为 [xxx] 定义提示路径
【发布时间】: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');但什么也没发生 :(
  • 你也不应该对自定义包使用自动加载部分,假设在供应商目录中有。

标签: php laravel-5


【解决方案1】:

我认为report是你的包名,

第一步:必须在服务提供者内部指定包名

$this->loadViewsFrom(__DIR__.'/views', 'report'); 

第 2 步:如果要加载视图

return view('packageName::Email.testmail'); //packageName is report, the actual path to my view is package/report/src/views/Email/testmail.blade.php

【讨论】:

    【解决方案2】:

    需要在cofing/app.php中添加包的服务提供者

    【讨论】:

    • 这成功了!准确地说,添加VoyagerThemes\VoyagerThemesServiceProvider::class
    【解决方案3】:

    我解决了错误No hint path defined for [view],将以下代码sn-p放在我的服务提供者boot我的包的方法中:

    $this->loadViewsFrom(__DIR__.'/views', 'home');
    

    home 是我的视图文件home.blade.php。由于我是 Laravel 初学者,可能在包构建类型的编码中需要提供服务提供者内部视图文件的路径。

    【讨论】:

      【解决方案4】:

      如果您在 ...views/xxx 中有刀片视图,那么您可以指定它:

      app('xxx')->addNamespace('mail', resource_path('views') . '/xxx');
      

      【讨论】:

        【解决方案5】:

        如果您使用infyomlabs/adminlte-templates 包,只需在config/app.php 中添加服务提供者,如下所示:

        'providers' => [
            // ...
            InfyOm\AdminLTETemplates\AdminLTETemplatesServiceProvider::class,
            // ...
        ],
        

        【讨论】:

          猜你喜欢
          • 2019-01-04
          • 2021-10-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-10-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多