2016-05-26 4 views
0

ユーザーデータを表示するなどのベストプラクティスは何ですか?Laravelビュー内のデータを表示するためのベストプラクティス

  1. UserContollerのshow関数でユーザーを取得し、ユーザー変数をビューに渡しますか?

  2. $ user_idを渡して、ビューでユーザーを取得するshow関数のビューを返す?

例1:

public function show($id) 
{ 
    $user = User::findOrFail($id); 
    return view('config.users.show')->withUser($user); 
} 

例2:

public function show($id) 
{ 
    return view('config.users.show')->withId($id); 
} 
+0

ビューにユーザーを渡すことができます。ビューは、データベースクエリを実行したり、データを取得したりしてはいけません。 – ceejayoz

答えて

1

ビューは、データ表現のために責任があります。

は チャートや図などの情報の任意の出力表現することができます。同じ情報の複数のビューは、管理の棒グラフや 会計士の表形式など、可能な限り です。

モデルは、 アプリケーションのデータ、ロジック、およびルールを直接管理します。

第3の部分は、コントローラは、入力を受け取り、ビューにdataを渡すべき

Source

モデルまたはビューの コマンドに変換します。あなたの最初の例は正しいものです。

代わりのwithUser()キープ使っwith(key, value)

例:

はビューで
public function show($id) 
{ 
    $user = User::findOrFail($id); 
    return view('config.users.show')->with('user', $user); 
} 

{{ $user->name }} //assuming user have a name attribute 
+0

ありがとう!なぜ 'withUser($ user)'の代わりに 'with( 'user'、$ user)'を使うのですか? –

+0

データの受け渡し方法 – xdevnull

1

xdevnullの回答に加えて、idはデータを渡すには、いくつかのより多くの情報を追加して、共有したいです私がlaravelを最初に学んだとき、これは私があなたと感じたので苦労したより大きな分野でした:)

return view('config.users.show')->withUser($user); 

Laravelの動的機能の機能は動作するはずですか?

個人的に私は - > with( 'user'、$ user);が好きです。ブレード・ビューの方法

その後:

{{$user->propertyname}} 

私はyoureのは一つだけのモデルを必要とする、あなたのケースで知っているが、idは複数のものに

を渡すのいくつかの例は、時々自分がより多くを渡します見つけるIDシェアを考えましたあなたと方法を使用して、自分のものの配列を渡す必要があり、その場合には

$user = User::findOrFail($id); 
$someOtherModel = Model::findOrFail($id); 

1つのモデルまたはデータの一部より あなたのビューで次に
return view('config.users.show')->with([ 

    'user'=> $user, 
    'otherModel'=>$someOtherModel 

]); 

{{$ otherModel-> propertyNameの}} {{する$ user-> propertyNameの}}

と最近私は自分自身のようなIDのすべての結果を取得見つけます私の見解のさまざまな部分で特定のものを使用できるようにする。私はこれに関する質問をしました。答えの1つは、モデルのコレクションを配列にすることでした。私が言ったように、時々、すべての結果を取得している可能性があり、特定の列や値で特定のものを選択したいことがあります。

たとえば、私はサイトデータ(電話、住所、ソーシャルメディアリンクなど)を追跡するモデルを持っており、それらを自分のビューに渡し、その名前に従ってページの特定の部分にアクセスしたいと考えました。

私のブレードのテンプレートに
$site_meta = \App\SiteMeta::lists('value', 'name'); 

return view($page_string, compact('site_meta'); 

{{$site_meta['Facebook']}} 

希望、これはあなたが何らかの形で、私はそれを学んでいたとき、それは確かに私がやった知っている:)

関連する問題