Laravel 4 - RESTful控制器中的命名路由

时间:2013-06-10 02:36:06

标签: php laravel laravel-4

我正在尝试与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()的第三个参数。

1 个答案:

答案 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的“仪表板”...所以......“路由名称是内部的”。