laravel - Laravel:将当前视图名称传递给 View Composer
问题描述
我在 Laravel 中有一个刀片文件,名为 products.blade.php。在该文件中,我包含一个子视图,它显示来自数据库的数据。子视图使用 View Composer 获取数据(以避免在需要显示该数据的任何地方编写相同的代码)。
是否可以将“主”视图的名称传递给该 View Composer?
在我的 AppServiceProvider 中,我有以下代码:
view()->composer('*', function ($view) {
view()->share('view_name', $view->getName());
});
所以子视图知道父视图的名称。我试过了:
@include('sub-view.name', ['parent' => $view_name])
并尝试parent
在 View Composer 中访问该变量,但我得到:Undefined variable: parent
.
我也尝试过$view->getName()
View Composer 的 compose 方法,但是它给了我的名称,sub-view
我需要parent
.
任何帮助,将不胜感激。
提前致谢
解决方案
所有视图数据都可以通过 using$view->getData()
方法访问。
所以在视图作曲家你可以做
class MyCustomComposer
{
/**
* Bind data to the view.
*
* @param View $view
* @return void
*/
public function compose(View $view)
{
$currentView = $view->getData()['view_name'];
// Do something
}
}
推荐阅读
- c++ - AVX2 有符号 8 位元素的整数乘法,产生有符号 16 位结果?
- jquery-select2 - Select2 不起作用从 jQuery (dataAdapter) 更改值
- javascript - 带线到另一个 div 的图像标题
- wpf - Webclient 使用异步恢复下载
- angularjs - AngularJS,_spPageContextInfo 未定义
- javascript - 如何将动态添加的元素转换为 JSON 并返回
- c# - 在 Asp.net 核心中间件中访问 ModelState
- sqldf - 删除使用 R 中的 sqldf 库创建的 SQLite 数据库
- c# - 在本地 IIS 服务器上运行 DotNet Core Web 应用程序的正确安装顺序是什么?
- cassandra - Cassandra 中使用 LCS 的 TTL 墓碑是在同一级别数据中创建的 TTLed 数据?