我有一个应用程序,它有许多视图,需要将一些代码注入视图的特定部分。在之前的应用程序中,我使用了根控制器来执行此操作并使用了特殊功能,但它改变了创建laravel应用程序的正常工作流程。
基本上说你有一个创建功能
public function create()
{
return view('something');
}
并且您希望向特定部分添加内容,通常您将在视图中执行此操作并添加视图调用所需的任何数据。我想在控制器中执行此操作,但由于返回视图的任何函数在这种情况下都会显示相同的内容,我想稍微简化一下。
我试过看但我找不到关于控制器功能的后期处理的任何内容,是否有类似的东西?这是一个例子。
public function beforeRender($instance)
{
if ($instance instanceof View)
{
$instance->getFactory()->inject('context-menu', $someData);
}
return $instance;
}
beforeRender函数将在控制器中的create函数之后运行并更改返回,允许对具有视图的任何内容进行特殊返回。
所以我的问题是,如果在laravel 5(或类似的)中有这样的东西,我将如何做到这一点。在之前的应用程序中,我重新设计了laravel如何处理控制器,但我希望这次不要这样做。
答案 0 :(得分:1)
如果我没弄错的话,该功能将在Laravel 5.1中实现。您可以获取开发版本或等到发布时间。
Laravel文档中的@inject('metrics', 'App\Services\MetricsService')
<div>
Monthly Revenue: {{ $metrics->monthlyRevenue() }}.
</div>
您也可以查看Code Composers。方法有点不同,保持观点的灵活性和跨度:
public function compose(View $view)
{
$view->with('count', $this->users->count());
}