Laravel使用控制器路由

时间:2014-02-07 19:22:12

标签: php laravel laravel-4

我在路线中有资源并且工作正常,我想将其更改为Route::controller

但在定义我在php artisan route中收到错误后:

   +--------+------------------------------------+-----------+---------------------------------+----------------+---------------+
    | Domain | URI                                | Name      | Action                          | Before Filters | After Filters |
    +--------+------------------------------------+-----------+---------------------------------+----------------+---------------+
    |        | GET index                          | index     | Closure                         |                |               |
    |        | GET admin/index                    | dashboard | Closure                         |                |               |
    |        | GET logout                         | logout    | Closure                         |                |               |
    |        | POST auth                          | auth      | Closure                         | csrf           |               |
    |        | GET login                          | login     | Closure                         |                |               |
    |        | GET admin/admin/profile/{_missing} |           | ProfileController@missingMethod |                |               |
    +--------+------------------------------------+-----------+---------------------------------+----------------+---------------+

我当前的路线是:

Route::resource('profile' , 'ProfileController', array('as'=>'profile') );

我希望将其更改为:

Route::controller('admin/profile', 'ProfileController', array('index'=>'profile.index') );

如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

这不是错误,资源和控制器路由完全不同。

资源路由具有预定义的路由列表(索引,创建,存储,删除,更新)。如果您没有在控制器中设置方法,它仍然可以工作,除非有人点击那条路线。

控制器路由依赖于您的控制器方法:

public function getIndex() {}
public function getCreate() {}
public function postStore() {}

方法名称预定义为

<http method><your action name>()

如果您的控制器中没有这些方法,Laravel将不会在您的路线列表中显示它们。

所以,只需创建一个

public function getIndex() {}

在你的控制器中运行

php artisan route

再次

答案 1 :(得分:0)

使用:

Route::resource('profile, 'ProfileController', array('as' => 'profile', 'names' => array('index' => 'profile.index')));

而不是上述路线。