編集機能を作っていて 編集画面(フォーム入力)→確認画面→保存の流れで実装したいのですが、編集画面でデータを入力して確認画面へ遷移するボタンを押すと以下のようなエラーが出てしまいます。
Undefined index: id
下記編集確認画面の<form action="{{ route('site.update', $data['id'])}}" method="post"> この文でエラーがでています。
どなたか解決方法ご教示ください。よろしくお願いします。
確認画面でdd($data);するとIDが渡ってきていませんでした。
編集確認画面 edit_confrim.blade.php <form action="{{ route('site.update', $data['id'])}}" method="post"> {{$data['site_name']}} {{$data['site_url']}} <input type="hidden" name="site_name" value="{{$data['site_name']}}"> <input type="hidden" name="site_name" value="{{$data['site_url']}}"> <input type="button" onclick="history.back()" value="戻る"> <button type="submit">適用</button> </form>
編集画面 edit.blade.php <form action="{{ route('site.edit_confirm', $site['id'])}}"> <p>サイト名</p> <input type="text" name="site_name" value="{{ old('site_name',$site['site_name'] )}}"> <p>サイトURL</p> <input type="text" name="site_url" value="{{ old('site_url',$site['site_url'] )}}"> <a href="/site">戻る</a> <button type="submit">確認</button> </form>
コントローラー public function edit($id) { $site = Site::find($id); return view('site/edit', ['site' => $site,]); } public function edit_confirm(Request $request) { $data = $request->all(); return view('site/edit_confirm', ['data' => $data,]); } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { //リクエストされたIDで編集対象のデータを取得する $data = Site::find($id); //編集データに入力値をつめてsaveする $data->site_name = $request->site_name; $data->site_url = $request->site_url; $data->save(); return redirect()->route('site.index'); }
Wep.php Route::get('site/{site}/edit/confirm', 'App\Http\Controllers\SiteController@edit_confirm')->name('site.edit_confirm'); Route::post('site/{site}/edit/confirm', 'App\Http\Controllers\SiteController@edit_confirm');
回答1件
あなたの回答
tips
プレビュー