2015-06-30 3 views
0

Я добавил поддомен reseller на свой myhost.com (reseller.myhost.com), и я использую его для маршрутизации на мой модуль Reseller. Прочитайте этот вопрос я отвечал перед тем здесь: click hereZF2 Маршрутизация по имени хоста работает с другими модулями

Моего Reseller маршрут конфигурация выглядит следующим образом:

'router' => array(
    'routes' => array(
     'Reseller' => array(
      'type' => 'Hostname', 
      'options' => array(
       'route' => 'reseller.myhost.com', 
       'constraints' => array(

       ), 
       'defaults' => array(
        'controller' => 'Reseller\Controller\Reseller', 
        'action'  => 'index' 
       ) 
      ), 
      'may_terminate' => true, 
      'child_routes' => array(
       'home' => array(
        'type' => 'Zend\Mvc\Router\Http\Literal', 
        'options' => array(
         'route' => '/', 
         'defaults' => array(
          '__NAMESPACE__' => 'Reseller\Controller', 
          'controller' => 'Reseller', 
          'action'  => 'index', 
         ), 
        ), 
       ), 

      ) 
     ) 
    ) 
) 

Моего createdAd маршрут соответствует по reseller.myhost.com/createdAd, но я ожидаю маршруты из других модулей не работают на этом reseller субдомен.

и вот мои рекламируют конфигурации маршрута

'router' => array(
     'routes' => array(
      'locate' => array(
       'type' => 'segment', 
       'options' => array(
        'route' => '/locate[/:cityName][/:CityId][/:CategoryId][/:categoryName]', 
        'constraints' => array(

        ), 
        'defaults' => array(
         'controller' => 'Advertise\Controller\Advertise', 
         'action'  => 'index', 
        ), 
       ), 
      ), 


      'createAd' => array(
       'type' => 'segment', 
       'options' => array(
        'route' => '/createAd[/:subCategoryId]', 
        'constraints' => array(

        ), 
        'defaults' => array(
         'controller' => 'Advertise\Controller\Advertise', 
         'action'  => 'createAd', 
        ), 
       ), 
      ), 




     ), 
    ), 


)); 

быть уведомление, что я хочу, чтобы рекламировать модуль работать без субдомена и работать нормально и только реселлер модуль работу с поддоменом

Почему это происходит?

+0

Я не понимаю, в чем проблема. Не могли бы вы добавить некоторые подробности. Что ожидается? Что происходит? Как выглядит конфигурация маршрута в «других модулях», о которых вы упоминаете. – Wilt

+0

@ Надеюсь, мой firend i excpet отправит на реселлер.myhost.com/createAdvertise dosent work beacuse createAdvertise route, определенный в контроллере рекламы, не в ResellerController –

ответ

0

Насколько я понимаю из вашего вопроса: вы ожидаете, что маршрутне будет работать на субдомене. Таким образом, reseller.myhost.com/createdAd не должен совпадать, вместо этого вы хотите совпадение на маршруте без субдомена myhost.com/createdAd.

Я предлагаю вам создать отдельное определение маршрута для модуля Advertise.

Ваш маршрут конфигурации в Advertise модуле (module/Advertise/config/module.config.php)

'router' => array(
    'routes' => array(
     'home' => array(
      'type' => 'Literal', 
      'options' => array(
       'route' => '/', 
       'defaults' => array(
        'controller' => 'Advertise\Controller\Advertise', 
        'action'  => 'index' 
       ) 
      ), 
     ) 
     'createAd' => array(
      'type' => 'Literal', 
      'options' => array(
       'route' => '/createAd', 
       'defaults' => array(
        'controller' => 'Advertise\Controller\Advertise', 
        'action'  => 'createAd', 
       ) 
      ) 
     ) 
    ) 
) 

Ваш маршрут конфигурации в Reseller модуле (module/Reseller/config/module.config.php)

'router' => array(
    'routes' => array(
     'Reseller' => array(
      'type' => 'Hostname', 
      'options' => array(
       'route' => ':reseller.myhost.com', 
      ), 
      'may_terminate' => false, 
      'child_routes' => array(
       'home' => array(
        'type' => 'Literal', 
        'options' => array(
         'route' => '/', 
         'defaults' => array(
          'controller' => 'Reseller\Controller\Reseller', 
          'action'  => 'index' 
         ) 
        ) 
       ) 
      ) 
     ) 
    ) 
), 

Вы можете различать матчи из-за поддомена.

Пути home и createAdd соответствуют модулю Advertise без субдомена.

Маршрут reseller.home соответствует индексу в модуле Reseller в пределах поддомена reseller.myhost.com.

Проверить для более подробной информации также имя хоста маршрутизации Пример here in the ZF2 documentation

+0

Позвольте мне обновить свой вопрос, чтобы помочь вам полностью –

+0

Я обновил свой вопрос, пожалуйста, прочитайте мой обновленный вопрос и 2 строки в конце, обратите внимание на раздел спасибо –

+0

be обратите внимание, что я хочу рекламировать работу модуля без субдомена и работать нормально, и только модуль реселлера работает с субдоменом –

0

Вы должны иметь «корень» имя хоста для всех стандартных маршрутов не на маршруте подобласти. Например:

'router' => array(
    'routes' => array(
     'myhost' => array(
      'type' => 'Hostname', 
      'options' => array(
       'route' => 'myhost.com', 
      ), 
     ), 
    ), 
), 

Теперь вы можете добавить свой маршрут «createAd» (и другие маршруты) в качестве дочернего маршрута «MyHost» маршрута. Например:

'router' => [ 
    'routes' => [ 
     'myhost' => [ 
      'child_routes' => [ 
       'createAd' => array(
        'type' => 'segment', 
        'options' => array(
         'route' => '/createAd[/:subCategoryId]', 
         'constraints' => array(

         ), 
         'defaults' => array(
          'controller' => 'Advertise\Controller\Advertise', 
          'action'  => 'createAd', 
         ), 
        ), 
       ), 
      ], 
     ], 
    ], 
],