🍝
LaravelでContollerからViewに関数を渡す
はじめに
LaravelではControllerからViewに変数値を渡すことができますが、同様にViewからController側の処理をコールバックできるように関数が渡せるかを試してみました。
※Bladeでは未確認
Controllerの実装(抜粋)
app/Http/Controllers/HelloController.php
public function hello()
{
return view('hello')->with([
"outputDebugLog" => function ($text) {
$this->outputDebugLog($text);
},
]);
}
private function outputDebugLog($text)
{
Log::debug("outputDebugLog:" . $text);
}
Viewの実装(抜粋)
views/hello.php
<?php
$outputDebugLog("ログの出力");
?>
Routeの実装(抜粋)
routes/web.php
Route::get('/hello', 'HelloController@hello');
結果
ログが出力されていたので、変数同様に関数も渡すことができるのを確認しました。
Laravelは9を使用しています。
Discussion