2013-08-25 40 views
-1

我试图航线整个控制器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

你可以发布你的控制器吗? – Laurence

+0

好奇你为什么不想重命名方法? – Makita

回答

2

您正在将其定义为RESTful控制器。 my.app/mycontroller/index将对应于一个名为getIndex()的方法。

1

getAnyMethod()你这里有几个问题。一个是你需要在方法名称前加上你正在寻找的动作。因此,例如,您的方法名称应为getAnyMethod(),它将响应mycontroller/any-method

+0

救生员! Omg,为什么Laravel需要连字符?这应该是可选的! –

+1

不确定,但我相信这是因为你的URI看起来更干净。 'MYAPP。com/public/mycontroller/any-method'看起来比“myapp.com/public/mycontroller/anyMethod”更好看。 – user1669496

+0

确实它看起来更好。 :) –

0

如果你不想要一个RESTful控制器,你应该使用如下所示的命名路由注册所有控制器的功能,这样Laravel 4可以正确地反映特定控制器的特定方法并执行它,当你输入浏览器中的网址。

Route::get('yourcontrollerslug', array('as' => 'your.route.name', 'uses' => '[email protected]')); 
Route::post('yourcontrollerotherslug', array('as' => 'your.route.othername', 'uses' => '[email protected]')); 

L4 documentation它下文称到映射路由的名称(和在结果的特定路由)到控制器的动作。

// You may also specify route names for controller actions: 

Route::get('user/profile', array('as' => 'profile', 'uses' => '[email protected]')); 

也许实际上有其他的方式来实现你想要在一个更方便的方式 - 但我不知道这样的:)

希望这可以帮助你反正。