Zend Framework中的路由2

时间:2017-08-07 12:51:19

标签: zend-framework zend-framework2

不久我就开始使用Zend Framework 2了,我正在尝试为具有类似规则的产品编写路由:

  

/ [蛞蝓] -test [ID] [AV | AI | CV | CI | SVB | SIB | SVC | SIC | SVI | SII | TV | TI]

此规则的示例如下所示:

  

/冷冻功能于良好状-test12345cv

我尝试使用REGEX:

'details' => array(
            'type' => 'Zend\Mvc\Router\Http\Regex',
            'options' => array(
                'route' => '(?<slug>[a-zA-Z0-9_-]+)-test(?<id>[0-9]+)(?<sufix>(av|ai|cv|ci|svb|sib|svc|sic|svi|sii|tv|ti))',
                'defaults' => array(
                    '__NAMESPACE__' => 'Application\Controller',
                    'controller' => 'List',
                    'action' => 'details',
                ),
                'spec' => '%slug%-test%id%%sufix%',
            )
        ),

以及SEGMENT:

'details' => array(
            'type' => 'Segment',
            'options' => array(
                'route' => '/:slug-test:id:sufix',
                'defaults' => array(
                    '__NAMESPACE__' => 'Application\Controller',
                    'controller' => 'List',
                    'action' => 'details',
                )
                'constraints' => array(
                    'slug' => '[a-zA-Z][a-zA-Z0-9_-]*',
                    'id' => '[0-9]*',
                    'sufix' => '[av|ai|cv|ci|svb|sib|svc|sic|svi|sii|tv|ti]'
                )
            )
        ),

但它不起作用。谁能说出我做错了什么?谢谢!

2 个答案:

答案 0 :(得分:0)

我会在这里Segment。我在路由配置中注意到的唯一问题是sufix约束:您应该键入[av|ai|…]而不是(av|ai|…)

答案 1 :(得分:0)

请尝试这个 -

Public Sub UpdateTextBox(ByVal text As String)
    RichTextBox2.AppendText(text & System.Environment.NewLine)
End Sub

在此行'details' => array( 'type' => 'Segment', 'options' => array( 'route' => '/:slug[-test]:id:sufix', 'defaults' => array( '__NAMESPACE__' => 'Application\Controller', 'controller' => 'List', 'action' => 'details', ) 'constraints' => array( 'slug' => '[a-zA-Z][a-zA-Z0-9_-]*', 'id' => '[0-9]*', 'sufix' => '[av|ai|cv|ci|svb|sib|svc|sic|svi|sii|tv|ti]' ) ) ),

你遇到了问题,因为它认为“slug-test”是单个变量。 所以为此,你应该将“-test”与“slug”变量分开。

'route' => '/:slug-test:id:sufix',