laravel 5 NotFoundHttpException发生

时间:2015-08-24 14:54:44

标签: laravel laravel-5 laravel-routing

我注意到我经常收到这个错误。假设我开始为项目表创建一个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变量。正如我所说的那样,我从一开始就使用编辑重做我的项目,我知道它会起作用(就像我之前所做的那样)。

由于

1 个答案:

答案 0 :(得分:3)

当您创建edit网址时,您需要传递id来创建有效的网址,在这种情况下,当您要使用{{1}编辑项目时,它应该是projects/1/edit }。否则,您将获得此id=1,因为在您的路线中没有路线NotFoundHttpException,但可能有路线projects//edit