开发者

ZendFramework: Simple Router_Regex problem

I have never been any good at regular expressions. I am trying to use them in building a simple site. I construct a URL j开发者_开发技巧ust fine like /some-course/some-vtm-1, but when it tries to lookup the defined controller, it fails. Here is the route I have defined:

chapter' => array(
                'type'  => 'Zend_Controller_Router_Route_Regex',
                'route' => '/:course/:vtm\-(\d+)',
                'defaults' => array(
                    'module'     => 'learn',
                    'controller' => 'chapter',
                    'action'     => 'index'
                ),
                'map' => array(
                    1 => 'course',
                    2 => 'vtm',
                    3 => 'id'
                ),
                'reverse' => '%s/%s-%d/'
            ),

How should I correct this Regex so it finds the correct module/controller/action when I a link like /some-course/some-vtm-1 is clicked


Your problem is that you're trying to mix the syntax of Zend_Controller_Router_Route (named variables in the route starting with :) and Zend_Controller_Router_Route_Regex (bracketed regular expression patterns in the route). You want to drop the former and just use the regexp syntax, leaving you with something like this:

array(
    'type'  => 'Zend_Controller_Router_Route_Regex',
    'route' => '([\w]+)/(vtm)-([\d]+)',
     'defaults' => array(
        'module'     => 'learn',
        'controller' => 'chapter',
        'action'     => 'index'
     ),
     'map' => array(
         1 => 'course',
         2 => 'vtm',
         3 => 'id'
     ),
     'reverse' => '%s/%s-%d'
 ),
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜