php - 如何为 zend framework 2 restful 路由创建一个可选的路由参数

标签 php zend-framework2

我正在使用 zend framework 2,我需要为路由段创建一个可选参数,该路由段也有两个必需参数。下面是描述路由的 module.config.php 中的一个片段。我的理解是,在 ZF2 中,可以使用

创建一个可选的路由参数
[/:param]

你看到的就是我的。只要我发送可选参数,它就可以正常工作,但是当我省略它时,前两个参数“uname 和 appname”将一起附加到“uname”约束中。该路由是父路由。

'roles' => array(
            'type' => 'segment',
            'options' => array(
              'route' => '/roles/:uname/:appname[/:locnames]',
              'constraints' => array(
                'uname' => '[a-zA-Z].+',
                'appname' => '[a-zA-Z0-9_-].+',
                'locnames' => 'locnames'
             ),
             'defaults' => array(
                 'controller' => 'Roles/Controller/RolesController'
              ),
            ),
        ),

我在这里遗漏了什么,我知道你可以定义可选参数,但我不知道正确的格式

最佳答案

感谢 #zftalk 上的 grizzm0 或帮助我解决这个问题。这是一个简单的正则表达式问题。删除约束中的点 (.) 可以正确匹配传入的 url 参数。所以我的路线现在看起来像这样:

'roles' => array(
    'type' => 'segment',
    'options' => array(
      'route' => '/roles[/:action][/uname/:uname][/appname/:appname][/locnames/:locnames]',
      'constraints' => array(
        'uname' => '[a-zA-Z]+',
        'appname' => '[a-zA-Z0-9_-]+',
        'locnames' => 'locnames'
     ),
     'defaults' => array(
         'controller' => 'Roles/Controller/RolesController'
      ),
    ),
),

关于php - 如何为 zend framework 2 restful 路由创建一个可选的路由参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33189463/

相关文章:

php - 无法在 MacosX 上安装 php Intl 扩展

php - PDO错误我不知道如何修复

php - ZF2 - 从路线生成网址

doctrine-orm - zf2 doctrine2 和 Zend\Db\Adapter\Adapter 使用一个数据库连接

PHP 内置 Web 服务器未找到 Assets

php - : blogger. com、tumblr.com 等博客服务是什么?用于制作动态子域

php - 什么是 PHP 和 Perl 共享的良好的纯文本配置文件格式?

php - Elasticsearch\RuntimeException:无法进行JSON编码:第33行的文件/Elasticsearch/Serializers/SmartSerializer.php中的5

php - 不同 Controller 的不同布局文件

php - Zend 框架 2 : how to get columns from joined tables?