是否可以根据路由定义定义Silex路由。例如,根据以前的路由定义以下路由:
/a/{user}/{app_name}/list/ -> /a/{user}/{app_name}/list/{id}/
/a/{user}/{app_name}/add/ -> /a/{user}/{app_name}/add/success/
/a/{user}/{app_name}/help/ -> no sub route这里,当4为list或success时,当4为add或当E 1114E 212为help时,5路由应为{id}。然而,我不知道如何在Silex中做到这一点:
$app -> get('/a/{user}/{app_name}/{action}/{sub}/', function (Silex\Application $app, $user, $app_name, $action, $sub) {
...
});显然这对他们都不起作用。
有没有办法这样做:
$app -> get('/a/{user}/{app_name}/{action}/', function (Silex\Application $app, $user, $app_name, $action) {
if ($action == 'list') {
$app -> get('/a/{user}/{app_name}/{action}/{id}', function (Silex\Application $app, $user, $app_name, $action, $id) {
...
});
} elseif ($action == 'add') {
$app -> get('/a/{user}/{app_name}/{action}/success', function (Silex\Application $app, $user, $app_name, $action) {
...
});
}
});actions list、add、help等是不确定的,因为它们是由我在系统中创建简单应用程序的用户定义的。所以我不可能直接在我的代码中硬编码。只有在路由到特定的用户应用程序(如/a/jim/cook )之后,这些操作才可用。
这个是可能的吗?多么?
发布于 2017-07-02 11:32:46
在这个答案中找到了解决方案:https://stackoverflow.com/a/15214674/49318
$app->get('/pdf/{template}/{args}', function ($template, $args) {
...
})
->assert('args', '.*')
->convert('args', function ($args) {
return explode('/', $args);
});https://stackoverflow.com/questions/44869217
复制相似问题