ZF2 高级路由:如何拥有用户目录


ZF2 Advanced Routing: how to have user directories?

使用 Zend

Framework Routing (Zend''Mvc''Router''RouteStack),如何添加模块来支持用户配置文件页面。

但我也想让它通过支持根目录中的其他页面/模块,如 /rss/search/asdf . 这是我的第一个猜测,没有运气...

'Zend'Mvc'Router'RouteStack' => array(
    'parameters' => array(
        'routes' => array(
            'default' => array(
                'type'    => 'Zend'Mvc'Router'Http'Segment',
                'options' => array(
                    'route'    => '/[:username[/:action]]',
                    'constraints' => array(
                        'username' => '[a-zA-Z][a-zA-Z0-9_-]*',
                        'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
                    ),
                    'defaults' => array(
                        'controller' => 'Application'Controller'UserController',
                        'action'     => 'index',
                    ),
                ),
            ),

网址示例...

  • https://github.com/weierophinney
  • https://github.com/weierophinney/following

通了。 在路由树的最末尾使用了 Zend''Mvc''Router''Http''Regex 匹配...

                    'user' => array(
                        'type' => 'Zend'Mvc'Router'Http'Regex',
                        'options' => array(
                            'regex' => '/(?<id>[a-zA-Z0-9_-]+)',
                            'defaults' => array(
                                'controller' => 'Application'Controller'IndexController',
                                'action'     => 'user',
                            ),
                            'spec' => '/%id%',
                        ),
                    ),
                    'user-schedule' => array(
                        'type' => 'Zend'Mvc'Router'Http'Regex',
                        'options' => array(
                            'regex' => '/(?<id>[a-zA-Z0-9_-]+)/schedule',
                            'defaults' => array(
                                'controller' => 'Application'Controller'IndexController',
                                'action'     => 'schedule',
                            ),
                            'spec' => '/%id%/schedule',
                        ),
                    ),