我有一个表单,它会向控制器的更新方法提交补丁请求。
但是更新方法需要有$ id,正如你在下面尝试我得到的那样你可以看到
No query results for model [Item].
由于更新方法未收到模型的$ id
public function update($id)
{
$item = Item::findOrFail($id);
$update = Input::all();
// some codes to save changes
return Redirect::route('items.index');
}
另一件事是,每当我提交表单时,url就变成这样的东西:
mw.dev/items/%7Bitems%7D
修改
routes.php文件
Route::resource('items','ItemsController');
ItemController
public function edit($id)
{
$item = Item::findOrFail($id);
return View::make('items.edit')->with('item',$item);
}
我已将代码包含在 edit.blade.php
中{{Form::open(array('route' => 'items.update', 'method'=>'patch'))}}
{{Form::text('barcode', $item->barcode, array('placeholder' => 'barcode'))}}
{{Form::text('imei',$item->imei, array('placeholder' => 'imei'))}}
{{Form::text('item_name', $item->item_name, array('placeholder' => 'item name'))}}
{{Form::submit('edit')}}
{{Form::close()}}
答案 0 :(得分:1)
您必须将模型传递给视图,并在生成表单时需要传递id
参数。假设您有一个User
模型,并且该模型在视图中可用。因此,您可以使用以下内容生成表单操作:
// Using Form::open method with route
Form::open(array('route' => array('route.name', $user->id)))
// Using Form::model method with route
Form::model($user, array('route' => array('route.name', $user->id), 'method' => 'patch'))
// Using Form::open method with action
Form::open(array('action' => array('Controller@update', $user->id), 'method' => 'patch'))
// Using Form::open method with url
Form::open(array('url' => 'something/update/' . $user->id, 'method' => 'patch'))
在Opening A Form上查看更多内容。
答案 1 :(得分:0)
网址
mw.dev/items/%7Bitems%7D
很可能是
的网址编码形式mw.dev/items/{items}
我认为表单提交或<form>
的{{1}}个参数或action
Route::*
声明中存在问题。
这也可以解释为什么在提交时没有得到任何routes.php
。