[英]Laravel Form Model Binding not submitting
我在使用L4的表單模型綁定時遇到了一些麻煩。 我的表格正在填充,路線正確,但提交不正確。
控制器:
public function edit($id)
{
$transaction = Transaction::where('id', '=', $id)->get();
return View::make('transaction')->with('transactions', $transaction);
}
public function update($id)
{
$transaction = Transaction::find($id);
$input = Input::all();
$transaction->status = $input['status'];
$transaction->description = $input['description'];
$transaction->save();
}
視圖:
@foreach($transactions as $transaction)
{{ Form::model($transaction, array('route' => array('transactions.update', $transaction->id))); }}
{{ Form::text('description'); }}
{{ Form::select('status', array('R' => 'Recieved', 'S' => 'Shipped', 'P' => 'Pending'), 'R'); }}
{{ Form::submit('Submit'); }}
{{ Form::close(); }}
@endforeach
我假設您的transactions.*
路由是通過Route::resource()
生成的。
根據文檔 ,Laravel為資源生成以下路由:
Verb Path Action Route Name
GET /resource index resource.index
GET /resource/create create resource.create
POST /resource store resource.store
GET /resource/{resource} show resource.show
GET /resource/{resource}/edit edit resource.edit
PUT/PATCH /resource/{resource} update resource.update
DELETE /resource/{resource} destroy resource.destroy
您將看到resource.update
期待一個PUT/PATCH
請求,但是Laravel表單默認為POST
。
要解決此問題,請將'method' => 'PUT'
到表單選項數組中,如下所示:
{{ Form::model($transaction, array(
'method' => 'PUT',
'route' => array('transactions.update', $transaction->id)
)); }}
這會將隱藏的輸入<input type="hidden" name="_method" value="PUT" />
到您的表單中,這告訴Laravel將請求欺騙為PUT
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.