自定义网址相同的控制器

时间:2015-03-03 01:53:50

标签: php laravel laravel-5 laravel-routing

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

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,网址为/methodName,而无需明确使用Route::get()

1 个答案:

答案 0 :(得分:1)

您正在寻找一个隐含的控制器&#34; (docs here)。

如果您定义路线,请执行以下操作:

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
}