2021-03-13
Laravel
Blade
View
Blade viewへのデータの渡し方いろいろ
2年前の記事です。
Laravelは古い情報は全く役に立たないので絶対に参考にしないでください。
コメントに新しい情報がないか確認してください。
バージョン
- Laravel 8.x
The Laravel Framework. Contribute to laravel/framework development by creating an account on GitHub.
view()の第二引数
return view('welcome', ['name' => 'laravel']);
The Laravel Framework. Contribute to laravel/framework development by creating an account on GitHub.
/**
* Get the evaluated view contents for the given view.
*
* @param string|null $view
* @param \Illuminate\Contracts\Support\Arrayable|array $data
* @param array $mergeData
* @return \Illuminate\Contracts\View\View|\Illuminate\Contracts\View\Factory
*/
function view($view = null, $data = [], $mergeData = [])
view()->with()
return view('welcome')->with(['name' => 'laravel']);
配列部分にcompact()を使うこの形が一番使う。
$name = 'laravel';
return view('welcome')->with(compact('name'));
with()はこれなのでwith(['key' => 'value'])
でもwith('key', 'value')
でもいい。
/**
* Add a piece of data to the view.
*
* @param string|array $key
* @param mixed $value
* @return $this
*/
public function with($key, $value = null)
{
if (is_array($key)) {
$this->data = array_merge($this->data, $key);
} else {
$this->data[$key] = $value;
}
return $this;
}
複数のデータを渡すことを考えると最初から配列がいいけど->with('key', 'value')->with('key2', 'value2')
と繋げてもいい。
$view = view()
$view = view('welcome');
$view->with('key', 'value');
return $view;
コントローラーの途中で渡すこともできるけど後から見た時に分かりにくいのであまり使わないほうがいい。
ArrayAccess
$view = view('welcome');
$view['key'] = 'value';
return $view;
__set()
$view = view('welcome');
$view->key = 'value';
return $view;
withFoo()
return view('welcome')->withKey('value');
使ったことないけどコードを見るとこの辺りも可能。
Bladeコンポーネント
publicプロパティは自動的にviewに渡されるのでrender()で渡さなくていい。
Livewire
Livewireでもpublicプロパティは自動的に渡される。
ただしLivewireではpublicプロパティで持ちたくないことも多いのでrender()で渡すこともある。