Laravelでデータの入力を行うformと編集するformを作っていますが、同じテーブルを扱うので自ずとformのinputの内容が同じになります。なのでformのbladeテンプレート作って入力でも編集でも使える様にしたいです。
しかし、それぞれのパターンで微妙に違いがあるのでそこをどう一つのbladeテンプレート補えばいいのか模索しております。createの際は初期にinputには何もvalueはありませんが、editの際は初期に編集するデータがinputのvalueに入ってます。また、createとeditでformの接続先である、actionの値が違います。そこの違いを考慮して例として以下の様なformのbladeテンプレートを作りました。
PHP
1<form action="{{$action}}" method="post"> 2 @csrf 3 <input type="text" name="name" 4 value="@if(old('name') != null) 5 {{old('name')}} 6 @elseif(isset($content)) 7 {{$content['name']}} 8 @endif"> 9 <input type="submit" value="submit"> 10</form>
上記の$actionはcontorollerから渡された値です。これはこれで十分だとおもいます。
問題はinputのvalueです。create、edit共通でにvalidationで引っかかって修正することがあるのでまずold関数で古い入力した値がないか確認します。あれば、それを表示します。なかった際は編集時で編集前のデータがあるかもしれないのでisset関数でcontorollerから送られたコンテンツのデータがないか確認し、あればセットします。それもなければcreate時と判断して何もセットしません。そんな感じで上記のif文を書きましたが正直長すぎます。input数が増えるたびにあんなif文を書くのはしんどいです。
そこで質問なのですが、この様なパターンってよくあると思うので、なにか方法みたいのが確立されていると思うのですが、調べても出てきません。createとeditで同じformのbladeテンプレートを使い回すスマートな方法があれば教えてください。
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。