对于我正在开发的CMS的一部分,我遇到了一个令人讨厌的问题。 我得到了所有部分的路线,“产品”,例如:
Route::get('admin/products', array('as' => 'admin/products', 'uses'=> 'admin.products@index'));
Route::get('admin/products/create', array('as' => 'admin/products/create', 'uses'=> 'admin.products@create'));
Route::get('admin/products/edit/(:num)', array('as' => 'admin/products/edit', 'uses'=> 'admin.products@edit'));
Route::get('admin/products/delete/(:num)', array('as' => 'admin/products/delete', 'uses'=> 'admin.products@delete'));
..和相关文件,如产品控制器,产品型号和视图。
在我决定创建一个新的部分“用户”之前,一切都很顺利。我使用与“产品”相同的方法,创建路线和其他文件。事实上,我只是复制并粘贴文件,在需要时进行更改 - 非常简单。通过访问“admin / users”和“admin / users / create”,它可以按预期工作。但我无法访问“/ users / edit / 1”和“/ users / delete / 1”。我认为这将是一个路线问题,但是当我测试路线文件时,我甚至在到达路线之前得到了404。这是一个例子:
Route::get('admin/users/edit/(:num)', function()
{
return "Holy Hell.";
});
“神圣的地狱”永远不会被打印到屏幕上。
以下是“用户”的配置:
Route::get('admin/users', array('as' => 'admin/users', 'uses'=> 'admin.users@index'));
Route::get('admin/users/edit/(:num)', array('as' => 'admin/users/edit/', 'uses'=> 'admin.users@edit'));
Route::get('admin/users/create', array('as' => 'admin/users/create', 'uses'=> 'admin.users@create'));
Route::get('admin/users/delete/(:num)', array('as' => 'admin/users/delete', 'uses'=> 'admin.users@delete'));
我发现/检查过的事情:
我想知道我是否遗漏了一些非常明显的东西。有任何想法吗?如果没有,有人请告诉我如何调试这个吗?
非常感谢。
答案 0 :(得分:1)
您的路线状况不佳。扭转他们。路线从上到下进行评估,因此路线中admin/products
的所有内容都将路由到admin.products@index
,而不会发送任何其他内容。
在edit
方法中,您需要定义id
参数。
由于你没有发布你的控制器,我假设这就是原因,因为闭包没有传递给它$id
。例如:
// Required user id:
Route::get('admin/users/edit/(:num)', function($id)
{
return "Holy Hell.";
});
// Optional user id:
Route::get('admin/users/edit/(:num?)', function($id = null)
{
return "Holy Hell.";
});
在您的情况下,您可能不需要可选部分,除非您计划喷出错误(或重定向错误)。