在发布模型绑定表单时,我在laravel资源路由上获得404状态代码。表单开始标签如下:
{!!Form::model($project, ['route' => ['admin.projects.update', $project->id], 'method' => 'PUT', 'files' => true])!!}
//Form content here
{!! Form::close() !!}
在routes:list下显示的资源路由是:
+--------+----------+-----------------------------------+-------------------------+------------------------------------------------------------------+------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+-----------------------------------+-------------------------+------------------------------------------------------------------+------------+
| | PUT | admin/projects/{projects} | admin.projects.update | App'Http'Controllers'Admin'AdminProjectsController@update | |
和控制器:
public function update(CreateProjectRequest $request, $id)
{
$data = $request->all();
$project = Project::findOrFail($id);
$project->update($data);
return redirect('admin/projects/edit/all');
}
当我在devtools中检查响应时,有效负载被附加并且路由url是正确的。例如,如果我正在更新一个id为150的项目,则url为
http://localhost:8888/project-name/public/admin/projects/150
如果我不做任何更改,则来自控制器的重定向工作。如果我只通过表单添加文件,它也可以工作。这是当我改变文本输入数据,我有问题。在使用资源路由之前,我从来没有遇到过这个问题,而且在尝试了几个小时后,我也无法解决这个问题。
有没有新鲜的眼睛看到我在哪里犯了一个错误?ANSWER
疲劳导致代码草率。我对一个方法进行了两次相同的调用,该方法引入了原始记录数据,并在稍后用于引用正在更新的记录。