2016-09-29 3 views
2

私はlaravel 5.3(make:auth自動登録とユーザ認証ジェネレータ)を使用しており、ユーザが登録フォームでタグを選択できるようにしたいと思います。コンパクトを使用してコントローラからlaravelを表示する配列を渡します

にあるregister.blade.phpファイルに$tags = App\Tag::all();を渡したいと思います。

私はこの方法が見つかりました:

public function showRegistrationForm() 
{ 
    return view('auth.register'); 
} 

をし、私が何をしたいと思います:

public function showRegistrationForm() 
{ 
    $tags = App\Tag::all(); 
    return view('auth.register', compact($tags)); 
} 

が、register.blade.phpファイルに到達しようとしたとき、私は未定義の変数'tags'を取得します。

+0

'リターンビュー( '認証を使用することができますlaravel 5.3でこの

return view('auth.register', compact('tags')); 

のように使用し、その後コンパクト使いたい場合。 –

+0

http://stackoverflow.com/a/22413121/6521116 –

答えて

3

compactを使用する場合は、変数自体にはフィードしないでください。

return view('auth.register', compact('tags')); 
+2

またはバニラ宣言を使用してください: 返信するビュー( 'auth.register') - > with(['tags' => $ tags]); 、array( 'tags' => $ tags)); – Ghost

0

まずあなたがこのことを知っておく必要があります。

モデルビューコントローラ

コントローラは、中心点すなわちですが、モデルからデータを取得し、ビューにデータを渡し、またはこのどういう意味。だから平面図:

public function showRegistrationForm() 
    { 
     return view('auth.register'); 
    } 

このここでは、平面図.AND以下、これを返します。あなたのケースでは、モデルデータを含むビューを返しますApp\Tag:App\Tag::all()はコレクション、つまりデータセットを持つコンテナです。

public function showRegistrationForm() 
    { 
     $tags = App\Tag::all(); 
     return view('auth.register', compact($tags)); 
    } 

以上ではなく、配列を圧縮する代わりに、新しい配列を作成してデータセットを渡します。ここで

return view('auth.register', ['tags' => $tags]);

あなたのアプリをデバッグする方法です。この方法の下に使用します。

public function showRegistrationForm() 
    { 
     $tags = App\Tag::all(); 
     dd($tags); 
     //return view('auth.register', compact($tags)); 
    } 

あなたは、配列またはエラーを参照していますか?配列の場合は、データセットが表示に渡されます。そうでない場合、モデルが存在しないか、または何かが存在しないというエラーがあります。ログファイルを確認してください。

Good Luck。

0

あなたは、彼らは以下のような変更を持っていますが、でも、あなたは両方の方法:)

return view('auth.register', ['tags' => $tags]); 
関連する問題