簡體   English   中英

Laravel表單模型綁定未提交

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM