【问题标题】:Include package view in my main view在我的主视图中包含包视图
【发布时间】:2016-10-27 14:09:06
【问题描述】:

我的 Laravel 项目中有一个包,它拥有自己的视图。我需要将该视图包含在我的项目的主视图中。我的包被命名为 Tkabir\Somepackage。在我的项目的 config/app.php 中,我已将包的服务提供者包含为

'providers' => [
    /*
     * Package Service Providers...
     */
    Tkabir\Somepackage\SomeServiceProvider::class,
]

还包括包外观的别名

'aliases' => [
    /*
     */
    'Somepackage' => Tkabir\Somepackage\Facade\Somepackage::class,
]

但是,当我尝试将包中的视图包含在我的主视图中时,如下所示:

@include('Somepackage::welcome')

...welcome.blade.php 是我的包中的刀片视图文件,我得到以下错误显示:

FileViewFinder.php 第 112 行中的 ErrorException: 没有为 [Somepackage] 定义提示路径。 (查看:E:\xampp\htdocs\laravel->projects\test_package\resources\views\welcome.blade.php)

这似乎是什么问题?

这是我在 Github 中的包的链接,如果有人需要查看文件:mypackage

【问题讨论】:

  • 另外,有高代表的人可以编辑我的帖子标题以使其更有意义吗?我开始写标题但后来完全忘记完成它-_-
  • 最好将您的包视图发布到 laravel 资源目录,这样可以轻松访问。

标签: php laravel laravel-5.3 laravel-blade


【解决方案1】:

@include 包含一个视图。您正在调用一个类的方法。

您正确地包含了配置

$this->publishes([
    .'/Config/somepackage.php' => config_path('somepackage.php'),
], 'config');

您需要在服务提供商的boot() 视图方法中为您的视图做同样的事情:https://laravel.com/docs/5.3/packages#views |标题:发布视图

您还需要像运行配置一样运行php artisan vendor:publish,并将您的视图包含在@include

查看我提供的关于在 Laravel 中构建包的完整文档的链接

【讨论】:

  • 非常感谢!完全按照你所说的去做,它就像一个魅力!但是,我在从控制器/配置定义的包视图中有一些变量。所以为了在我的主视图中使用这些变量,我还必须从包中发布控制器和配置文件,对吧?
  • 最好将控制器留给 Laravel,然后在你的包中创建一个类。然后在加载您需要包含的视图的控制器之一中调用该类,然后传入该数据。
猜你喜欢
  • 2012-05-28
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 2011-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多