質問: ['err1' => 'エラー!','err2' => '入力しなおしてください']; return redirect('/')->withInput($err_msg); } ``` こちらでリダイレクトさせた場合、view側ではold()ヘルパ関数を使用し、withInputにて渡したデータを表示させることができますが、ビュー側で@issetなどで条件にかける場合はどのように指定すれば良いでしょうか? 具体的には以下のようにしたいしたいのですが、以下のコードではエラーが発生しうまくいきませんでした。 ``` @isset(old($err_msg)) @foreach(old($err_msg) as $msg) {{$msg}} @endforeach @endisset ``` **※追記** エラー内容は下記の通りです。 「Cannot use isset() on the result of an expression (you can use "null !== expression" instead)」 $err_msgがundefinedではないかといったご指摘なのですが、自分としましては、redirect_indexメソッド内で「return redirect('/')->withInput($err_msg);」こちらで指定し、渡しているにも関わらずundefinedになる点が分からない部分でもあります。
回答: > > $err_msgがundefinedではないかといったご指摘 > > > これはwithInputで私た配列が、セッションで保存され、次回、oldに、引き出したい添字(key)を渡すことで、valueを得る事ができる機能で、$err_msgという名前の変数を持ち越しさせる機能ではありません。 まず、PHPはHTTPアクセスされる度に、実行され、レスポンスが終了したら変数もろとも全てが消えて、初期化されるという概念を理解してください。 リダイレクトは、goto文ではないのです。新しくHTTPリクエストを発行させるのです。 これが理解できないのであれば、Laravelを扱うのは時期早々です。 なんども書いておりますが、まずはPHPだけで掲示板ぐらい作ってみてはいかがでしょうか? > > Cannot use isset() on the result of an expression (you can use "null !== expression" instead) > > > こちらのエラーに関しては読んで字のごとくですが、`issetの引数に、式を入れる事ができない`です。 逆にいうと、issetの引数には変数名($hoge)しか入れられません。関数の結果がセットされているかどうかについては使えないためです。 どうすればいいのか、についてですが、一旦変数にいれてから、issetに入れる、または書いてある通り `あなたは "null !== expression"を使用する事ができます`。 その上で、このエラー解決後、$err_msgがundefinedと言われる事でしょう。 この予言が的中するのであれば、Laravelの学習は一旦やめ、PHPを勉強し直した方がいいでしょう