Laravel 5.2 路由像蛋糕一样


Laravel 5.2 routing like cakephp

我是拉拉维尔的新手。我来自cakephp,所以路由给我带来了一些困难。

我已经尝试了这个问题,但遇到了错误。我也尝试了Route::controller();Route::resource();但没有得到我想要的结果。

我只是希望叽叽喳喳

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
}

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

   Route::any('{anyRoute}', function($anyRoute){         $call = ";         $parts = 爆炸("/", $anyRoute);         $size = sizeof($parts);         if($size> 0){             $controller = ucfirst(strtolower(trim($parts[0])));             $action = trim(array_get($parts, 1));             $params = [];             if(empty($controller)){                 返回视图("欢迎");             }             否则{                 if(empty($action)){                     $action = "索引";                 }             }             if($size> 2){                 未设置($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', '(.*)');

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

我假设你想得到参数

//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没有像CakePHP那样的隐式路由(和你一样,我从CakePHP转移到了Laravel)。您最好定义资源路由,即

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

这样做的好处是,人们能够通过查看 app/Http/routes.php 文件来查看应用程序响应的路由,而不必深入研究控制器类并查看在其中定义的操作。