Laravel 5.2 像 cakephp 这样的路由

Laravel 5.2 routing like cakephp

我是 laravel 的新手。我来自 cakephp,所以路由对我来说有点困难。

我试过 Question 但出现错误。 我也尝试了 Route::controller();Route::resource(); 但没有得到我想要的结果。

我只是希望 rounting 是

http://example.com/controller/action/param1/param2/param3

另外,如果我能得到后端管理的答案,比如

http://example.com/backend/controller/action/param1/param2/param3

在 Laravel 5.2 中,由于烦人的竞争条件,Route::controller('Controller') 的使用已被弃用。

为了得到你想要的结果。假设您有一个控制器 App\Http\Controllers\MyController.

在您的 routes.php 文件中,您将拥有以下内容:

Route::group(['middleware' => ['web']], function(Router $router) {

    // Note the question marks after the parameters
    // this makes them optional.
    $router->get('uri/{action?}/{param1?}/{param2?}', [
        'uses' => 'MyController@getIndex'
    ]);
});

您现在将拥有一个控制器方法getIndex

// As the parameters were optional, make sure to give them
// default values.
public function getIndex($action = null, $param1 = null, $param2 = null)
{
    // Your route logic
}

获取参数的最简单方法我认为这种方法可能对您有帮助:

我假设你想要获取参数

//App/routes.php

Route::get( '/controller/action/{param1}/{param2}/{param3}' , 'ActionController@getParams' );



//App/Http/Controllers/ActionController.php

public function getParams($param1, $param2, $param3 )
    {
        return $param1.$param2.$param3;
    }

第二部分也是一样。

更多信息:laravel controller

Laravel 没有像 CakePHP 那样的隐式路由(像你一样,我从 CakePHP 转移到 Laravel)。你最好定义资源路由,即

$router->resources([
    'users' => 'UserController',
    'articles' => 'ArticleController',
    'events' => 'EventController',
    // And so on...
]);

这有利于人们通过查看您的 app/Http/routes.php 文件来了解您的应用程序响应的路由,而不是必须深入研究您的控制器 类 并查看您在其中定义的操作。

我也是来自 cakephp,我写这条路由是为了模拟 cakephp 路由。


    Route::any('{anyRoute}', function($anyRoute){
         $call = "";
         $parts = explode("/", $anyRoute);
         $size = sizeof($parts);

         if($size > 0){
             $controller = ucfirst(strtolower(trim($parts[0])));
             $action = trim(array_get($parts, 1));
             $params = [];

             if(empty($controller)){
                 return view("welcome");
             }
             else{
                 if(empty($action)){
                     $action = "index";
                 }
             }

             if($size > 2){
                 unset($parts[0], $parts[1]);
                 $params = array_merge($params, $parts);
             }

             $object = app('App\Http\Controllers\'.$controller.'Controller');
             call_user_func_array([$object, $action], $params);
         }

    })->where('anyRoute', '(.*)');