2013-03-23 120 views
2

我正在从L3迁移到L4。注册缺省L4安装附带的HomeController控制器时,尝试转到页面www.domain.com/home会给我一个ResourceNotFound异常。我做了composer dumpautoload但是没有帮助。控制器路由未在Laravel 4中找到

我错过了一个额外的步骤?

routes.php文件

Route::controller('home', 'HomeController'); 

控制器/ HomeController.php

<?php 

class HomeController extends BaseController { 

    public function showWelcome() 
    { 
     return View::make('hello'); 
    } 

} 

错误堆栈跟踪

NotFoundHttpException: 
in /var/www/l4/vendor/laravel/framework/src/Illuminate/Routing/Router.php line 1338 
at Router->handleRoutingException(object(ResourceNotFoundException)) in /var/www/l4/vendor/laravel/framework/src/Illuminate/Routing/Router.php line 992 
at Router->findRoute(object(Request)) in /var/www/l4/vendor/laravel/framework/src/Illuminate/Routing/Router.php line 956 
at Router->dispatch(object(Request)) in /var/www/l4/vendor/laravel/framework/src/Illuminate/Foundation/Application.php line 463 
at Application->dispatch(object(Request)) in /var/www/l4/vendor/laravel/framework/src/Illuminate/Foundation/Application.php line 448 
at Application->run() in /var/www/l4/public/index.php line 51 

回答

4

甲每人S的documentation

接下来,只需添加方法,您的控制器,与HTTP动词 他们对

所以响应前缀:

class UserController extends BaseController { 

    public function getIndex() 
    { 
     // Would response to /user and /user/index 
    } 
} 

所以,你的情况简单地将showWelcome()更名为getWelcome()就足够了。

+0

我注意到'getWelcome()'和'get_welcome()'的作品,但不是'getwelcome()'。 'action_welcome()'不再有效? – Nyxynyx 2013-03-23 16:02:46

+0

确实。我猜这通常是一个很好的习惯,无论如何骆驼都会碰到你的方法名。 – juco 2013-03-23 16:04:22

+0

很少有一个动作被称为多个HTTP请求类型,但它应该可以用'Route :: any('foo','MyController @ action')' – juco 2013-03-23 16:10:47

1

试着改变你的路线,这一点:

Route::resource('home', 'HomeController'); 

UPDATE:我的坏,我还以为你想要一个足智多谋的控制器,如下所述:http://four.laravel.com/docs/controllers#resource-controllers

对于“正常”的REST风格的控制器JUCO的答案似乎是正确的。

如果你想基本的控制器,你可以用它来符合您的控制器的方法:

Route::get('home', '[email protected]');