【问题标题】:zf2 regex routingzf2 正则表达式路由
【发布时间】:2015-01-28 12:49:31
【问题描述】:

我正在为正则表达式路由而苦苦挣扎...... 以下网址应该是有效的:

  • /shop/api/list
  • /shop/api/cart
  • /shop/api/登录
  • /shop/api/details/0123456789

details url,最后一个,并没有真正配合下面的路由:

            'child_routes' => array(
                'angularlist' => array(
                    'type' => 'Regex',
                    'options' => array(
                        'regex'    => '/api/(?<page>login|cart|list|details(?<id>\/[0-9]+))',
                        'spec' => '/api/%page%[/:%id%]',
                        'defaults' => array(
                            '__NAMESPACE__' => 'Shop\Controller',
                            'controller'    => 'Api',
                            //'action'        => '[a-zA-Z][a-zA-Z0-9_-]*',
                            'action'        => 'list',
                        //  'param'         => '[0-9]',
                        ),
                        /* todo ipv elke child toe te voegen 'route'    => '/api/[:action]', 'constraints' => array(
                            'action' => 'list|details|login|dashboard'
                        )*/
                    ),
                ),
             )

【问题讨论】:

  • 如果我理解正确的话,Regex 路由比 Segment 路由更昂贵。

标签: regex routing zend-framework2


【解决方案1】:

您可以轻松地实现Segment 路由堆栈,而不是为可读性较差和肮脏的正则表达式黑客而苦苦挣扎,如下所示:

'shop' => array(
    'type'    => 'Segment',
    'options' => array(
        'route'    => '/shop/api',
        'defaults' => array(
            '__NAMESPACE__' => 'Shop\Controller',
            'controller'    => 'Api',
            'action'        => 'index'
        ),
    ),
    'may_terminate' => true,
    'child_routes'  => array(
        'angularlist' => array(
            'type'    => 'Segment',
            'options' => array(
                'route'       => '/:action[/:id]', // id is optional
                'constraints' => array(
                    'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
                    'id'         => '[0-9]+',
                ),
                'defaults' => array(
                    'action' => 'index',
                ),
            ),
        ),
    )

【讨论】:

    猜你喜欢
    • 2016-06-09
    • 1970-01-01
    • 2020-10-10
    • 2019-01-01
    • 2014-04-14
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多