我遇到的问题是,当我在某些位置注册绑定时,我尝试绑定到我的视图的数据才有效。
例如,当我尝试在App::before()
过滤器中进行绑定时,它可以正常工作,successMessages
在所有视图中都可用。
App::before(function($request)
{
View::share('successMessages', array('All good', 'Nailed it', 'Perfect'));
});
但是,当我尝试在BaseController构造函数(所有控制器都继承自)时,我得到一个未找到变量的错误。
class BaseController extends Controller
{
public function __construct()
{
View::share('successMessages', array('All good', 'Nailed it', 'Perfect'));
}
}
当我尝试使用视图编辑器而不是View::share()
方法时,存在同样的问题。
View::composer(array('layouts.application', 'layouts.home'), function($view)
{
$view->with('successMessages', array('All good', 'Nailed it', 'Perfect'));
});
知道为什么这些会在App::before()
过滤器中注册而不是在控制器构造函数中注册,我认为它们应该属于哪个?
答案 0 :(得分:3)
在将消息传递给控制器的情况下,您很可能在未使用控制器的路由中找到未找到的变量,因此不构造BaseController。
例如,这个(选中)可以按照您的意愿工作(保留BaseController):
Route::get('testit',
array('as' => 'testing', 'uses' => 'App\Controllers\Site\SomeController@gsomeMethod')
);
对于从BaseController继承并构造视图的控制器中的任何方法,$ successMessages将在视图中可用。