Laravel 5注册了一个控制器来映射所有方法


Laravel 5 registering a controller to map all methods

我是来自CodeIgniter背景的Laravel 5的新手。我有不玩routes.php的习惯。CodeIgniter会自动映射像controllerName/MethodName这样的方法。但在Laravel 5中,我试图通过在app/http/sroutes.php:顶部写下这篇文章来注册一个控制器来实现同样的目的

Route::controllers([        
    'admin/user' => 'Admin'AdminUserController',
]);

当我运行php artisan route:list时,它显示控制器已注册。但当我看到URL /public/admin/user/addRole时,它显示addRole方法不存在,而我已经在AdminUserController中创建了一个方法。

Admin/AdminUserController.php

<?php namespace App'Http'Controllers'Admin;
use App'Http'Requests;
use App'Http'Controllers'Controller;
use Illuminate'Http'Request;
class AdminUserController extends Controller {
    public function getaddRole(){
        echo "adding Roles";
    }
}

Routes.php

 Route::controllers([       
        'admin/user' => 'Admin'AdminUserController',
    ]);
<?php namespace App'Http'Controllers'Admin;
use App'Http'Requests;
use App'Http'Controllers'Controller;
use Illuminate'Http'Request;
class AdminUserController extends Controller {
    public function getAddRole(){
        echo "adding Roles";
    }
}

注意:注意getAddRole((不是getAddRole(,使用camelCase

如果您的控制器操作包含多个单词,您可以使用URI中的"dash"语法访问该操作,如下所示:

public/admin/user/add角色

这很难说,因为我没有看到您的控制器代码,但我认为您错过了在方法名称中添加HTTP谓词。类似:

public function getAddRole(){
    // ...
}

如果您希望该方法与任何请求方法匹配,请使用any:

public function anyAddRole(){
    // ...
}