首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >定义Silex路线

定义Silex路线
EN

Stack Overflow用户
提问于 2017-07-02 09:14:53
回答 1查看 86关注 0票数 1

是否可以根据路由定义定义Silex路由。例如,根据以前的路由定义以下路由:

代码语言:javascript
复制
/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

这里,当4listsuccess时,当4add或当E 1114E 212help时,5路由应为{id}。然而,我不知道如何在Silex中做到这一点:

代码语言:javascript
复制
$app -> get('/a/{user}/{app_name}/{action}/{sub}/', function (Silex\Application $app, $user, $app_name, $action, $sub) {
    ...
});

显然这对他们都不起作用。

有没有办法这样做:

代码语言:javascript
复制
$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 listaddhelp等是不确定的,因为它们是由我在系统中创建简单应用程序的用户定义的。所以我不可能直接在我的代码中硬编码。只有在路由到特定的用户应用程序(如/a/jim/cook )之后,这些操作才可用。

这个是可能的吗?多么?

EN

回答 1

Stack Overflow用户

发布于 2017-07-02 11:32:46

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

代码语言:javascript
复制
$app->get('/pdf/{template}/{args}', function ($template, $args) {
    ...
})
->assert('args', '.*')
->convert('args', function ($args) {
    return explode('/', $args);
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44869217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档