【问题标题】:Laravel 5 handle return from controllerLaravel 5手柄从控制器返回
【发布时间】:2015-08-16 19:55:01
【问题描述】:

我有一个应用程序,它有许多视图,需要将一些代码注入视图的特定部分。在之前的应用程序中,我使用根控制器来执行此操作并使用了特殊功能,但是它改变了创建 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 处理控制器的方式,但这次我想避免这样做。

【问题讨论】:

    标签: php model-view-controller laravel-5


    【解决方案1】:

    如果我没记错的话,该功能将在 Laravel 5.1 中实现。您可以获取开发版本或等到发布版本结束。

    Service Injection 在 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());
    }
    

    【讨论】:

    • 我不认为这是我在寻找的东西,但它确实让我的大脑以不同的方式思考它。我想避免为多个控制器功能相同的部分添加相同的代码块。
    • 您也可以查看Code Composers。方法有点不同,保持视图的简洁和跨度。
    • 谢谢!我永远无法为这些东西找到正确的搜索词,但这看起来正是我正在寻找的,一直到使用服务提供商来定义它们。
    猜你喜欢
    • 2016-11-18
    • 1970-01-01
    • 1970-01-01
    • 2015-10-15
    • 2014-06-24
    • 1970-01-01
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多