我正在尝试用laravel 4路由整个控制器:
Route::controller('mycontroller', 'MyController');
当用户访问此网址时:
http://my.app/mycontroller/anyMethod
然后anyMethod
中的MyController
方法应该有效。
它应该适用于该类中定义的所有方法。
目前,当我去:my.app/mycontroller时,它会抛出NotFoundHttpException
当我去:my.app/mycontroller/aDefinedMethod时,它会抛出NotFoundHttpException
并说:找不到控制器方法。
有什么问题?
更新:据我所知,Route :: controller()现在在Laravel 4中很安静。那么,我不想要一个安静的控制器,我不想重命名我的方法。那么我应该如何设置一条路线来实现这个目标呢?
答案 0 :(得分:2)
您将其定义为RESTful控制器。 my.app/mycontroller/index将对应一个名为getIndex()的方法。
答案 1 :(得分:1)
没有看到你的控制器 - 问题可能是你没有定义'宁静'的控制器功能。 Route::controller() is now restful in Laravel 4 - See here for more info.
所以当你去url时
http://my.app/mycontroller/anyMethod
那么它应该是
getAnyMethod()
中的 MyController
答案 2 :(得分:1)
这里有一些问题。一个是您需要将您要查找的操作添加到方法名称中。例如,您的方法名称应为getAnyMethod()
,并且会响应mycontroller/any-method
。
答案 3 :(得分:0)
如果您不想使用RESTful控制器,您应该使用命名路径注册所有控制器的功能,如下所示,以便Laravel 4能够正确反映特定控制器的特定方法并执行它,当您输入URL时在浏览器中。
Route::get('yourcontrollerslug', array('as' => 'your.route.name', 'uses' => 'YourController@someFunctionOne'));
Route::post('yourcontrollerotherslug', array('as' => 'your.route.othername', 'uses' => 'YourController@someFunctionTwo'));
在L4 documentation中,它被称为将路由名称(以及结果中的特定路由)映射到控制器操作。
// You may also specify route names for controller actions:
Route::get('user/profile', array('as' => 'profile', 'uses' => 'UserController@showProfile'));
也许实际上还有其他方法可以更方便的方式实现你想要的东西 - 但我不知道这样:)
希望无论如何这会帮助你。