【问题标题】:Laravel - how to create custom 'with' methodLaravel - 如何创建自定义“with”方法
【发布时间】:2015-02-02 01:23:23
【问题描述】:

问题在标题中。 这是我尝试过的:

  • 我创建了MyView 类扩展View
  • 添加到应用别名列表
  • 我在该类中创建了方法withMyData(),如下所示:

(这只是一个例子。一切都以常规方式工作)

$my_data = 'some data';
return $this->with( 'my_data', $my_data );

然后我尝试了:

View::make('some-page')->withMyData();

我收到了这个错误:

ErrorException (E_UNKNOWN) 
Undefined offset: 0

tnx

【问题讨论】:

  • 你到底想做什么?为什么需要自定义方法?
  • 我有两个页面需要传递相同的数据。我只是不想重复相同的代码。
  • 那么也许你想要一个视图作曲家? laravel.com/docs/4.2/responses#view-composers

标签: php class laravel laravel-4


【解决方案1】:

您肯定选择了错误的方法来将某些内容传递给每个视图。请改用view composers

View::composer('layout', function($view){
    $my_data = 'some data';
    $view->with('my_data', $my_data);
});

layout 将是您的视图的名称。每次渲染时,composer 都会运行。您还可以使用通配符 * 或视图名称数组来定位多个视图)

您可以将此代码放在 app/filters.php 中或创建一个新的 app/composers.php 并将其包含在 app/start/global.php 的末尾:

require app_path().'/composers.php';

编辑

您已经可以使用with* 作为with('*' 的替代品。所以:

$view->with('my_data', $my_data);

可以写成:

$view->withMyData($my_data);

【讨论】:

  • 我也可以验证这是一个更好的方法
  • Tnx 回答,我很抱歉没有更具体。问题是我想传递一个具有相同键但具有不同值的特定数组。我已经使用 composer 来记录用户信息,我认为这一次不会对我有用。是否可以创建自定义“with”方法?再次Tnx!
  • 我明白了。我更新了我的答案。这是你要找的吗?
  • 嗯,我想就是这样……但这只是一个别名。这实际上不是我的方法,里面有一些操作,对吧? :(
  • 是的,它只是一个别名。您要执行什么操作?
猜你喜欢
  • 2017-09-30
  • 1970-01-01
  • 2015-02-09
  • 2015-06-04
  • 1970-01-01
  • 1970-01-01
  • 2016-08-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多