繁体   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