【发布时间】:2019-05-07 18:19:03
【问题描述】:
我有以下路线
Route::get('videos/{video}/edit', 'VideoController@edit');
Route::put('videos/{video}/update2', 'VideoController@update2');
第一条路线加载以下剥离视图
<form action='/videos/{{$video->uid}}/update2' method='post'>
<button class='btn btn-default' type='submit'>Update</button>
{{csrf_field()}}
{{method_field('PUT')}}
</form>
来自下面列出的控制器代码
class VideoController extends Controller{
public function edit(\App\Models\Video $video){
return view('video.edit',[
'video' => $video,
]);
}
public function update2(VideoUpdateRequest $request,\App\Models\Video $video){
echo "ok";
}
}
根据此代码,预期的行为应该是看到“ok”,而不是我得到 HTTP 302 Redirect,如下所示在 Dev Console 中。
这是一种奇怪的行为,这是意料之外的。提交表单后如何获得显示“OK”的预期行为?如何调试?
已解决
问题在于表单中的 HTML 元素没有“名称”属性,因此 Laravel 表单请求验证重定向回来。添加这些缺失的属性后,表单按预期工作。
【问题讨论】:
-
您需要重定向到一个视图,然后将成功消息发送到该视图。 laravel.com/docs/5.7/redirects。要么重定向回同一页面,要么只是“ok”的普通视图。
-
感谢您的回复,问题在于验证,删除验证时,路由按预期工作。
-
请在自己的答案中发布您的解决方案,谢谢。
-
答案已添加,感谢提醒