创建表单处理编辑操作的正确方法是什么

时间:2019-11-06 20:33:42

标签: laravel routing

我尝试从表单发送一些内容以对其进行编辑。

我尝试使用不同的方法来实现此结果。他们都没有工作。

<form method= "GET" action="{{route('edit', $contact->id)}}" name="edit">
                ...etc
 <button type="submit" class="btn btn-primary">Submit</button>
</form>

<form method= "GET" action="/{{$contact->id}}/edit" name="edit">
                ...etc
 <button type="submit" class="btn btn-primary">Submit</button>
</form>

我使用标准路由:

Route::resource('/', 'ContactController');

它会创建带有问号(使用GET的结果)的URL结尾,但是即使我手动从URL删除它,它仍然无法工作并显示404页。它出什么问题了?正确的方法是什么?

编辑: Route list

2 个答案:

答案 0 :(得分:0)

以下命令将根据您的web.php路由定义生成一条路由

{{ action('ContactController@edit', $contact)}}

所以只需将其放入表单声明中

<form method= "POST" action="{{ action('ContactController@edit', $contact)}}" name="edit">
@method('PATCH')

请注意,我将方法更改为post,并添加了@method视图助手,以使用正确的方法生成隐藏字段。除非您手动定义该路由,否则您不能使用get路由来更新模型,但我不建议您使用正确的REST动词 您还需要使用

答案 1 :(得分:0)

Route::resource的第一个参数是资源的名称,它也最终成为路径的一部分:

Route::resource('contact', 'ContactController');

然后,您可以使用路线助手:

<form method="POST" action="{{ route('contact.update', ['contact' => $contact->id]) }}">
@method('PUT')

“编辑”路线用于显示未处理的编辑表单。 “更新”路线用于进行更新,编辑表单将发布到该路径。