我正在尝试与RESTful控制器一起定义命名路由。在我的 routes.php 中,我有这个:
Route::controller('blog', 'BlogController', array('getIndex' => 'home'));
Route::controller('login', 'LoginController');
BlogController中的方法:
public function getIndex()
{
return View::make('blog.home');
}
当我尝试访问 / home 时,我收到 NotFoundHttpException ,所有其他路由都按预期工作。
不应该这样吗?我在this post找到了Route :: controller()的第三个参数。
答案 0 :(得分:2)
“路线名称”是内部的。
引用mentioned post:“您可以将一组方法名称及其对应的路由名称作为第三个参数传递给Route::controller
”...
因此,您的数组会将getIndex
方法附加到home
路由名称。但是“路由名称”是应用内部的一件事,但是当您尝试使用它时,它不是外部可访问的URL。
您可以使用以下内容将URL附加到指定路由:
Route::get('home', array('as' => 'home'));
在这种情况下,第一个“home”是URL部分,而第二个“home”是路由名称(您附加到“getIndex”方法)。见http://laravel.com/docs/routing#named-routes
使用命名路由,我们可以使用路由的标识符(例如,名称“dashboard”),但稍后,我们可以通过任何URL访问它,而不是需要在整个应用程序代码中进行全局搜索和替换。我们可以将“main”或“home”URL路径附加到名为route的“仪表板”...所以......“路由名称是内部的”。