我注意到我经常收到这个错误。假设我开始为项目表创建一个CRUD,但在Controller中我只做索引,创建和显示。我得到了所有与这些功能一致的东西。
稍后,我决定添加一个简单的编辑功能,如
public function edit(Project $project)
{
return view('projects.edit', compact('project'));
}
如果我然后尝试编辑项目,我会
NotFoundHttpException in RouteCollection.php line 143:
即使我只是返回一个String,我也会得到相同的异常。根据经验,如果我重新启动整个项目并从一开始就添加了编辑功能,那么它就可以顺利运行。
我已经尝试清除缓存,删除存储文件夹中的文件,我能想到的一切。然而,似乎没有任何作用。这个项目现在非常大,我真的不想重新开始。
我检查了路线:列表,路线就在那里,它都指向正确的位置。如果我选择编辑,则显示错误的页面会有一个类似
的网址http://localhost:8000/projects//edit
因此缺少项目/和/编辑之间的ID。如果我手动输入id,则页面显示正常。
我有什么办法可以在不重启项目的情况下摆脱这个错误吗?
由于
更新 我的路线是这样完成的
Route::model('projects', 'Project');
Route::bind('projects', function($value, $route) {
return App\Project::whereId($value)->first();
});
Route::resource('projects', 'ProjectsController');
这是我编辑的链接
{!! link_to_route('projects.edit', 'Edit', array($project->slug), array('class' => 'btn btn-info')) !!}
控制器
public function edit(Project $project)
{
$clients = Client::lists('clientName', 'id');
$users = User::lists('userName', 'id');
return View::make('projects.edit', compact('project', 'clients', 'users'));
}
我的节目工作得很好,我传递了一个Project变量。正如我所说的那样,我从一开始就使用编辑重做我的项目,我知道它会起作用(就像我之前所做的那样)。
由于
答案 0 :(得分:3)
当您创建edit
网址时,您需要传递id
来创建有效的网址,在这种情况下,当您要使用{{1}编辑项目时,它应该是projects/1/edit
}。否则,您将获得此id=1
,因为在您的路线中没有路线NotFoundHttpException
,但可能有路线projects//edit