#Laravelでviewに値を渡すやり方
タイトルの通りですけど、Laravelではコントローラーからビューに値を渡すのに複数のやり方があって、結局どれ使うのがいいのよっていうのがあんまりない気がするんで、考えてみました。
ちなみにlaravel5.6時点の想定で書いてます。
#早速それぞれの渡し方をみてみる
っていうことで、早速どんな渡し方があるか見てみる。
###1, with関数を使う
public function doSomething()
{
$value1 = 'value 1';
$value2 = 'value 2';
$value3 = 'value 3';
return view('/home')->with('value1', $value1)->with('value2', $value2)->with('value3', $value3);
}
いやー、前はなんとなくこれを使ってたんだけど、これ面倒くさいなあ笑
渡す値が一つくらいなら読みやすいですが、多くなると->with()を続けて書いていくことになって可読性も下がる気がする。
書く側も見る側も辛いんじゃないでしょうか??
はい、次。
###2, [ ]を使う
public function doSomething()
{
$value1 = 'value 1';
$value2 = 'value 2';
$value3 = 'value 3';
return view('/home' , [
'value1'=> $value1,
'value2'=> $value2,
'value3'=> $value3,
]);
}
おおっ!!さっきと比べてだいぶ読みやすいし書きやすい!!
with関数を使うよりシンプルに配列で渡してあげるほうが全然いい気がする!!2馬身差くらいで!!
最後いこう。
###3, compact関数を使う
public function doSomething()
{
$value1 = 'value 1';
$value2 = 'value 2';
$value3 = 'value 3';
return view('/home' , compact('value1','value2','value3'));
}
うおおおおっ!!すっごいスッキリした!
このcompact関数を使うと、すでに定義した変数と同じ名前のstringをドット区切りで渡してあげるだけでいいらしいっす。
ビューに渡す値って、だいたいは変数名と同じ名前になることが多いからいちいちそれを書かなくていいのはすごくいいんじゃないでしょうか!?
#結論:compact関数が素敵
・・・ということで、個人的にベストプラクティスはcompact関数で渡すことだと思うのですがどうでしょう?
ちなみに、速度等のベンチマークは一切行っていないので、異論は大いに認めます。笑
むしろ他にもこんなのどうとかあったら教えて!えろい人!