2013-06-01 7 views

答えて

9

View::shareは、アプリケーション内でどこでもにする必要があります。それが使用されている一般的な場所は、ビューの作曲家ですが、ルート内や必要な場所で使用できるはずです。

+0

コントローラのメソッドの中に 'View :: share( 'name'、 'Steve');があれば、他のすべてのビューで$ nameを利用できますか?それだけです。 – user2094178

+0

最初は間違っていました。私はroutes.phpに入れました。すでに期待していた効果がありました。私は一つのメソッドの中から別のコントローラの別のメソッドにしようとしていました。 – user2094178

+2

これを行う良い方法を探している人のために何かを追加するだけです。ベースコントローラの '' '__construct()' 'メソッドの中に配置してください。 ;) –

8

はい、追加:

View::share('foo','bar'); 

をあなたのroutes.phpファイルには、すべてのビューで( 'バー' の値を持つ)$ fooが利用できるようになります。これは、Twitter Bootstrapの「アクティブな」ナビゲーションクラスのようなものに特に便利です。たとえば、あなたが行うことができます:

View::share('navactive', ''); 

をnavactive変数はすべてのビューに設定されている(したがって、エラーがスローされません)、その後、あなたが(例えば、あなたのコントローラで)ビューを作っている時に確認するために、あなたは渡すことができます。

return View::make('one')->with('navactive', 'one'); 

、その後、あなたのビュー(好ましくは、いくつかのbootstrappyブレードテンプレート)で、次の操作を実行できます。

<ul class="nav"> 
    @if (Auth::user()) 
    <li @if ($navactive === 'one') class="active" @endif><a href="{{{ URL::to('one/') }}}">One</a></li> 
    <li @if ($navactive === 'three') class="active" @endif><a href="{{{ URL::to('three/') }}}">Three</a></li> 
    <li @if ($navactive === 'five') class="active" @endif><a href="{{{ URL::to('five/') }}}">Five</a></li> 
    @endif 
</ul> 
+0

これはとても便利です!ありがとう – titleistfour

+0

それはそのための便利な使い方です。しかし、 '$ navactive''が' isset() 'であるかどうかをチェックするif文をいつも追加することができます。あなたはナビゲーションマーキングについて言及しているので、別の便利な解決策は、ここで見つけることができるその目的のために構築したプラグインを使用することです:https://github.com/kfirba/markNavigator – kfirba

0

基本的にすべてのVを通じて変数を共有したい場合親クラスとしてベースルート(E:internalController.php)を作成し、他のコントローラーをその子として拡張することができます(E.x:childController.php)。

internalController.php__constructor()に設定するのが最も一般的です。クラスが初期化されるたびにランチされるため、親クラスが変数値を子クラスに提供します。