定义Silex路线

时间:2017-07-02 09:14:54

标签: 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

第4次路线应为{id}第4次listsuccess第4次< / strong> add第4次help时没有。但是,我不知道如何在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行动可用。

这可能吗?怎么样?

1 个答案:

答案 0 :(得分:2)

在这个答案找到解决方案:https://stackoverflow.com/a/15214674/49318

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