2014-03-07 2 views
0

мне нужно создать маршрут в Zend Framework, 2 проекта, который помогает мне создать эти URL:Zend Framework 2: Hostname и перенаправление

Код:

<?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 помощником URL.

обновление:

для экземпляра zfUser имеет специфические маршруты для обслуживания пользователя:

  • /пользователь
  • /пользователь/зарегистрировать
  • /пользователь/выход из системы

Когда я выполняю этот код, когда приложение начинается с t он 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

«Проблема» в том, что вы хотите установить маршруты ZfcUser в качестве детей вашего маршрута home. Однако ZfcUser устанавливает только маршруты как root, а не как child_routes.

Решение использует «прототипы» и ключ chain_routes. Это довольно не документировано, но вы можете прочитать некоторую информацию в this PR.

В основном преобразуйте маршруты верхнего уровня («домашний» и «имя пользователя») в прототип и установите ключ chain_routes для маршрута ZfcUser.