自定义URL相同的控制器


Custom urls same controller

假设我有一个看起来像这样的控制器:

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
}