🍝

LaravelでContollerからViewに関数を渡す

2022/11/23に公開

はじめに

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