🫣

withメソッドチェーンの使い方が分からなかった

に公開

-> メソッドチェーン

メソッドをつなげて記述できる

withメソッドチェーンの使い方が分からなかった

redirect()に続く ->withviewメソッドに続く ->with があって違いが分からなかった
with()はcontrollerからviewへ値を渡している

redirect()->with

PutController.php
    return redirect()
            ->route('tweets.update.index', ['id' => $tweet->id])
            ->with('feedback.success', 'つぶやきを編集しました');

redirect()は、RedirectResponsクラスのヘルパ関数

→へルパ関数とは、laravelに搭載されている独自の関数(内部的にphpの関数を実行している)

RedirectResponseクラスにwith関数があった

/vendor/laravel/framework/src/illuminate/Http/RedirectResponse.php
    public function with($key, $value = null)
    {
        $key = is_array($key) ? $key : [$key => $value];

        foreach ($key as $k => $v) {
            $this->session->**flash($k, $v)**;
        }
        return $this;
    }

flashメソッドが使用されている(データを一時的に保存するメソッド)
引数の $ kと $vはキーと値の関係になっているので、
ビューのsession()の引数にキー書くと、値が渡される
{{ session('feedback.success') }} => 'つぶやきを編集しました'


○データの一時保存
flash()はsesionクラスのメソッド

  • flashメソッドを使用して保存されたデータは、即時および後続のHTTPリクエスト中に利用可能
  • 後続のHTTPリクエストの後、一時保存したデータは削除される。
  • 持続保存の必要がないステータスメッセージで使える
    $request->session()->flash('status', 'Task was successful!');

redirect関数内のwithメソッド=flashメソッド
と思って良いのでしょうか


view()->with

IndexController.php
return view('tweets.update.index')
            ->with('tweet', $tweet);
	        ->with('htmlの変数名', $コントローラで定義した変数名);
/vendor/laravel/framework/src/illuminate/View/View.php
   public function with($key, $value = null)
    {
        if (is_array($key)) {
            $this->data = array_merge($this->data, $key);
        } else {
            $this->data[$key] = $value;
        }
        return $this;
    }
 へルパ関数
$callback = function ($value) {
    return is_numeric($value) ? $value * 2 : 0;
};

array_merge(配列, 配列, 配列・・・)
配列の後ろに配列を追加(結合)できる

中身はよく分からなかったけど変数を渡せる。

Discussion