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

How to pass a static variable to a Laravel route?

我尝试将 Symfony 路由重写为 Laravel 路由。问题是一些 Symfony 路由采用 defaults 并进入同一个控制器。我可以向 Laravel 路由添加一些参数来完成相同的任务吗?

例如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"

例如laravel

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

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

只需再创建一个Route::

Route::any('/account', 'SomeSymfonyController@secretFunt');
Route::any('/account2', 'SomeSymfonyController@publicFunt');

在你的 SomeSymfonyController 中你可以这样说:

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

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

万一 secretFunt()publicFunt() 的作用相同,但只有 $pag_act 的值不同:我们不希望在处理此 [=16] 时出现重复内容=] 变量。所以我们可以为此创建一个函数:

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);
}
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
}