ビューにバインドしようとしたデータが、特定の場所にバインドを登録した場合にのみ機能するという問題があります。
たとえば、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()
フィルターに登録されるのにコントローラーコンストラクターには登録されない理由はありますか?