Php 按流程定义Silex管线

Php 按流程定义Silex管线,php,symfony,silex,Php,Symfony,Silex,是否可以在管线定义过程中定义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 这里,当4th为list时,第5th路径应为{id},当4th为

是否可以在管线定义过程中定义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
这里,当4th
list
时,第5th路径应为
{id}
,当4th
添加时,路径应为
成功
,或当4th
帮助时,路径应为“无”。但是,我不知道如何在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) {
            ...
        });
    }
});
操作列表添加帮助等是不确定的,因为它们是由在我们的系统中创建简单应用的用户定义的。所以我无法直接在代码中硬编码它们。只有在路由转到特定的用户应用程序(例如
/a/jim/cook
)后,操作才可用


这可能吗?如何解决?

在以下答案中找到了解决方案:

$app->get('/pdf/{template}/{args}', function ($template, $args) {
    ...
})
->assert('args', '.*')
->convert('args', function ($args) {
    return explode('/', $args);
});