好的,所以我在Laravel项目中构建了多个软件包,但是每个软件包都有一些管理方面的功能,例如博客和论坛。现在我有了我的主要项目,除了为所有软件包提供纯基础之外,它所做的还不过。
我有自己的主导航管理模板,现在我想知道是否有办法从软件包中动态加载此菜单的扩展名?这是整个结构:
Resources
- views
- cp
- homer //Name of the template
- master.blade.php
- components
- nav.blade.php
现在在我的包裹中,我将具有以下结构
views
- cp
- components
- nav.blade.php
将所有具有相同结构的软件包合并到一起,将所有nav.blade.php合并在一起的最佳步骤是什么?
答案 0 :(得分:2)
您可以通过发布供应商文件来了解Laravel如何通过电子邮件和其他通知视图执行此操作。以下是相关文档:publishing views。
要向Laravel注册软件包的视图,您需要告诉Laravel视图位于何处。您可以使用服务提供商的 loadViewsFrom 方法执行此操作。 loadViewsFrom 方法接受两个参数:视图模板的路径和包的名称。例如,如果包的名称是Courier,则应将以下内容添加到服务提供商的引导方法中:
public function boot() {
$this->loadViewsFrom(__DIR__.'/path/to/views', 'courier');
}
使用 package :: view 语法约定引用包视图。因此,一旦您的视图路径在服务提供商中注册,就可以从快递包中加载admin视图,如下所示:
Route::get('admin', function () {
return view('courier::admin');
});
答案 1 :(得分:0)
结果,我最终创建了自己的服务,如下所示:
<data android:scheme="http"
android:host="xxxxnativeapp"
android:pathPrefix="/createpassword" />
这将读出我创建自己的软件包的正确文件夹
之后,我更新了AppServiceProvider
在启动功能中,我做了以下
namespace App\Services;
class ComposerService {
public function getLoadedPackages()
{
$folders = scandir(base_path('packages/author'));
unset($folders[0]);
unset($folders[1]);
unset($folders[2]);
return $folders;
}
}
现在我可以在刀片中访问main_nav并像使用
/** @var \App\Services\ComposerService $compiler */
$compiler = new ComposerService();
$packages = $compiler->getLoadedPackages();
$compiled = '';
foreach($packages as $package)
{
$compiled .= view('prefix-'.$package.'::cp.components.nav')->render();
}
View::share('main_nav', $compiled);
现在它会打印出我对每个软件包的所有导航视图。