假设我有一个看起来像这样的控制器:
AController.php
<?php namespace App'Http'Controllers;
use App'Http'Controllers'Controller;
class AController extends Controller {
public function doThis(){...}
public function doThat(){...}
public function doThing(){...}
}
routes.php
Route::get('/doThis', [
'as' => 'acontroller.dothis', 'uses' => 'AController@doThis'
]);
Route::get('/doThis', [
'as' => 'acontroller.dothat', 'uses' => 'AController@doThat'
]);
Route::get('/doThis', [
'as' => 'acontroller.dothing', 'uses' => 'AController@doThing'
]);
有比使用Route::get()
更好的方法吗?我希望我的路由自动为ControllerName.methodName
,url为/methodName
,而不必显式使用Route::get()
您正在寻找一个"隐式控制器"(此处为文档)。
如果你定义你的路线像:
Route::controller('/', 'AController');
指定前缀(第一个参数)下的所有路由都将路由到该控制器。Laravel期望将方法名称定义为HTTP谓词和路由的组合。
所以,你的控制器应该是:
class AController extends Controller {
public function getDoThis(){...} // GET to /doThis
public function postDoThat(){...} // POST to /doThat
public function anyDoThing(){...} // any verb to /doThing
}