如何将静态变量传递给Laravel路由?

时间:2017-06-28 07:57:39

标签: laravel laravel-5 laravel-5.3

我尝试将Symfony路线改写为Laravel路线。问题是一些Symfony路由需要defaults并且使用相同的控制器。我可以在Laravel路线上添加一些参数来完成同样的工作吗?

e.g。 Symfony yaml

 path: /account/
    defaults:
        _controller: "legacy.controller.fallback:Somefunt"
        pag_act: "secret"
        m_act: "home"

 path: /account2/
        defaults:
            _controller: "legacy.controller.fallback:Somefunt"
            pag_act: "public"
            m_act: "home"

e.g。 laravel

Route::any('/account', 'SomeSymfonyController@Somefunt');

如您所见:这两条Symfony路由的默认值不同(pag_act),我也可以在Laravel中传递它吗?

2 个答案:

答案 0 :(得分:3)

Route::any('/account', 'SomeSymfonyController@Somefunt')
      ->defaults('pag_act', 'secret');

Route::any('/account2', 'SomeSymfonyController@Somefunt')
      ->defaults('pag_act', 'public');

和你的SomeSymfonyController Somefunt方法

public function Somefunt(Request $request)
{
    dd($request->route('pag_act')); // Returns 'secret' or 'public' based on route
}

答案 1 :(得分:1)

只需创建另一个Route::any('/account', 'SomeSymfonyController@secretFunt'); Route::any('/account2', 'SomeSymfonyController@publicFunt');

public function secretFunt()
{
    $pag_act = 'secret';
    $m_act = 'home';
}

public function publicFunt()
{
    $pag_act = 'public';
    $m_act = 'home';
}

在SomeSymfonyController中你可以这样说:

secretFunt()

如果publicFunt()$pag_act完全相同,但只有$pag_act的值不同:我们处理此public function funtHandler($act) { $pag_act = $act; $m_act = 'home'; } public function secretFunt() { $pag_act = 'secret'; $this->funtHandler($pag_act); } public function publicFunt() { $pag_act = 'public'; $this->funtHandler($pag_act); } 时,我们不希望重复内容变量。所以我们可以为它创建一个函数:

{
    "name":"dan",
    "somestring":"asdf",
    "friends":[

            {
                "name": "carl",
                "height":180,
                ...
            },
            {
                "name": "john",
                "height":165,
                ...
            },
            {
                "name": "jim",
                "height":170,
                ...
            }

    ]
},
...