在Laravel中查看作曲家和创作者之间的区别?

2022-08-30 14:43:52

根据Laravel 4文档。

作曲家是

视图生成器是在呈现视图时调用的回调或类方法。如果每次在整个应用程序中呈现给定视图时,都希望将数据绑定到该视图,则视图编写器可以将该代码组织到单个位置。因此,视图作曲家的功能可能类似于“视图模型”或“演示者”。

View::composer('profile', function($view)
{
    $view->with('count', User::count());
});

创建者是

视图创建者的工作方式几乎与视图作曲家完全相同;但是,当视图实例化时,它们会立即触发。若要注册视图创建者,只需使用创建者方法

View::creator('profile', function($view)
{
    $view->with('count', User::count());
});

所以问题是:有什么区别?


答案 1

当您使用时,您有机会覆盖控制器中的视图变量。喜欢这个:View::creator

View::creator('layout', function($view) {
    $view->with('foo', 'bar');
});

// in controller
return View::make('layout')->with('foo', 'not bar at all');

// it's defined as 'not bar at all' in the view

-

View::composer('hello', function($view) {
    $view->with('foo', 'bar');
});

// in controller
return View::make('hello')->with('foo', 'not bar at all');

// it's defined as 'bar' in the view

答案 2

我花了一段时间才解决这个问题,我不得不挖掘源代码来解决这个问题。不同之处在于您希望在 Laravel 应用程序周期的哪个时刻运行命令。

在拉拉维尔周期中有许多点涉及视图。

您可以使用 创建视图。这是在实例化视图时 - 在命令期间,在返回函数之前调用任何视图。View::make()View::make()View::creators()

通常你只是运行 - 这意味着视图是“创建”的,然后返回到Laravel核心,然后它被“组合”到屏幕。这是调用的时候(即在视图返回之后)。return View::make()View::composer()

我不确定为什么你会想要使用一个或另一个,但这解释了两者之间的区别。


推荐