Zend Framework 2:主机名和重定向

时间:2014-03-07 20:11:25

标签: php zend-framework zend-framework2 zend-route

我需要在zend framework 2项目中创建一个路径,帮助我创建这些URL:

代码:

<?php

return array ( 
    'router' => array ( 
            'routes' => array ( 
                    'username' => array (
                            'type' => 'hostname',
                            'options' => array (
                                    'route' => ':username.test.:tld',
                                    'constraints' => array(
                                            'username' => '[a-zA-Z][a-zA-Z0-9_-]*',
                                            'tld' => '[com|net]*',
                                    ),
                                    'defaults' => array (
                                            'controller' => 'Application\Controller\Index',
                                            'action' => 'show',
                                            'tld' => 'com'
                                    )
                            )
                    ),


                    'home' => array (
                            'type' => 'hostname',
                            'options' => array (
                                    'route' => 'www.test.:tld',
                                    'constraints' => array(
                                            'tld' => '[com|net]*',
                                    ),
                                    'defaults' => array (
                                            'controller' => 'Application\Controller\Index',
                                            'action' => 'index',
                                            'tld' => 'com'
                                    )
                            )
                    ),

            )
    ), 

在某些情况下,当我调用http://username.test.com网址时,我需要通过网址助手将用户重定向到http://www.test.com

更新

例如,zfUser具有为用户提供服务的特定路由:

  • /用户
  • /用户/注册
  • /用户/注销

当应用程序从http://username.test.com

开始时执行此代码
<a href="<?php echo $this->url('zfcuser') ?>" title="Profilo"><i class="fa fa-user"></i><?php echo $this->translate('Your Profile') ?></a>

它创建了这样的链接:

我希望如此:

我怎么做?

1 个答案:

答案 0 :(得分:1)

此处的“问题”是您要将ZfcUser路由设置为home路由的子路由。但是,ZfcUser只将路由设置为root,而不是你的child_routes。

解决方案是使用“原型”和chain_routes键。它没有文档记录,但您可以在this PR中阅读一些信息。

基本上,将顶级路由(“home”和“username”)转换为原型,并为ZfcUser路由设置chain_routes密钥。