我尝试将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中传递它吗?
答案 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,
...
}
]
},
...