我是来自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(){
// ...
}