在我的路线文件中,我有一堆或路由用于测试目的:
/** testing controllers */
Route::get('viewemail', 'TestController@viewemail');
Route::get('restore', 'TestController@restore');
Route::get('sendemail', 'TestController@send_email');
Route::get('socket', 'TestController@socket');
Route::get('colors', 'TestController@colors');
Route::get('view', 'TestController@view_test');
Route::get('numbers', 'TestController@numbers');
Route::get('ncf', 'TestController@ncf');
Route::get('dates', 'TestController@dates');
Route::get('print', 'TestController@printer');
Route::get('{variable}', 'TestController@execute');
/** End of testing controllers */
我想删除所有这些路由并简单地使用给定URL的名称来调用并返回方法:
我用这种方式完成了:
Route::get('{variable}', 'TestController@execute');
在我的测试控制器中:
public function execute($method){
return $this->$method();
}
基本上我想知道如果Laravel有内置的解决方案来执行此操作,我正在阅读文档,但无法找到任何方法来实现此目的。
答案 0 :(得分:0)
来自官方文档: http://laravel.com/docs/5.1/controllers#implicit-controllers
Laravel允许您轻松定义单个路径来处理每个路径 控制器类中的操作。首先,使用the定义路线
Route::controller
方法。控制器方法接受两个 参数。第一个是控制器处理的基URI,而 第二个是控制器的类名:Route::controller('users', 'UserController');
接下来,只需向控制器添加方法即可。方法名称应以。开头 他们回复的HTTP动词后跟标题案例版本 URI:
<?php namespace App\Http\Controllers; class UserController extends Controller { /** * Responds to requests to GET /users */ public function getIndex() { // } /** * Responds to requests to GET /users/show/1 */ public function getShow($id) { // } /** * Responds to requests to GET /users/admin-profile */ public function getAdminProfile() { // } /** * Responds to requests to POST /users/profile */ public function postProfile() { // } }
正如您在上面的示例中所看到的,索引方法将响应 控制器处理的根URI,在本例中是用户。
答案 1 :(得分:0)
您可以为要侦听的端点添加路由模式。将它们路由到控制器操作,然后检查请求:
class TestController extends Controller
{
public function handle(Request $request)
{
$method = $request->segment(1); // Gets first segment of URI
// Do something…
}
}
在您的路线服务提供商中:
$router->pattern('{variable}', 'foo|bar|qux|baz');