2016-06-19 3 views
1

でそれらを使用します。渡すデータと、私は私のすべてのビューにデータを渡すために、このマニュアルを参照して続いてきたルート

https://laravel.com/docs/5.2/views#sharing-data-with-all-views

しかし、それは私が私の中の変数にアクセスすることはできません。 routesファイル。

どのように変数をすべてのビューに渡し、自分のルートのすべてのルートファイルで変数を使用できるようにすることができますか?

+0

あなたがしようとしていることの例を教えてください。あなたは何を試しましたか? – James

答えて

0

私はあなたがセッションを使うべきだと思う(またはデータをキャッシュする)

私はセッションを使用して、ここで

では、現在のユーザーセッションに

Session::put('key', 'value'); 
をsomeDataがを追加するとします最良の方法だと思います

今、あなたはこの

Session::get('key'); 
ようなあなたのビューでこれにアクセスすることができます

そして、あなたのコントローラ/ルート内でこの方法

$value = Session::get('key'); 

ファイルのデータは、あなたがあなたのプロセスについて考える必要が利用できる内部のコントローラ、ルートファイルとビュー

+0

ユーザーデータの一部が変更された場合(たとえば、ユーザーが設定を変更した場合)はどうなりますか?そのデータはキャッシュされないので、キャッシュが更新されない限り間違っていますか? – user6484209

+0

キャッシュを使用する場合、キャッシュをクリアすることができます。インサート/アップデートなどでキャッシュをクリアするモデルオブザーバを作成することができます。セッションと同じように、ユーザが変更するたびにセッション値を更新します –

1

です。特定のデータをすべてのビューに渡す目的は、その値がルートまたはコントローラのアクションではなく、ビューに関連するためです。たとえば、ページのタイトルや現在の日付をページの下部に表示します。

は、あなたがやりたい Illuminate\View\ViewのAPIドキュメントを見て、あなたは機能 offsetGetoffsetSetといったが表示されますするには。ここで

は例です:

アプリ/プロバイダ/ AppServiceProvider.php

<?php 

namespace App\Providers; 

class AppServiceProvider extends ServiceProvider 
{ 
    public function boot() 
    { 
     view()->share('title', 'Qevo'); 
    } 

    public function register() 
    { 
     // 
    } 
} 

リソース/ビュー/ example.blade.php

<h1>{{ $title }}</h1> 

アプリ/ Http/routes.php

Route::get('/test', function() { 
    // view has to be created for shared data to be set 
    $v = view('example'); 

    // get the value of the shared data 
    $page_title = $v->offsetGet('title'); 

    // set a new value 
    $v->offsetSet('title', $page_title . ' helps'); 

    return $v; 
}); 
関連する問題