2013-02-07 50 views
3

我正在編寫一個Zend Framework 2中的應用程序,它將從幾個不同的子域運行,並且我希望爲每個子域都有一個不同的模塊,以保持整潔。Zend Framework 2 - 多個子域導致問題

我的問題是,當我向路由添加多個子域時,它丟失了一個子域。

如:此安裝程序的 testbed.localhost(模塊/應用) a.testbed.localhost(模塊/ A)

如果我增加額外的話,會路線的所有應用程序的請求索引控制器

例如 testbed.localhost(模塊/應用程序),a.testbed.localhost(模塊/ A),b.testbed.localhost(模塊/ B)

這是module.config.php for module/A

'router' => array(
    'routes' => array(
     'ads' => array(
      'type' => 'Hostname', 
      'options' => array(
       'route' => 'a.testbed.localhost', 
       'constraints' => array(
        'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 
        'id'  => '[0-9]+', 
       ), 
       'defaults' => array(
        '__NAMESPACE__' => 'A\Controller', 
        'controller' => 'A\Controller\A', 
        'action'  => 'index', 
       ), 
      ), 

而且這是在模塊/ B module.config.php路線

'router' => array(
    'routes' => array(
     'ads' => array(
      'type' => 'Hostname', 
      'options' => array(
       'route' => 'b.testbed.localhost', 
       'constraints' => array(
        'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 
        'id'  => '[0-9]+', 
       ), 
       'defaults' => array(
        '__NAMESPACE__' => 'B\Controller', 
        'controller' => 'B\Controller\B', 
        'action'  => 'index', 
       ), 
      ), 

現在的命名空間中都module.config.php文件是正確的,我已經注意到的是子域名a.testbed.localhost如果我從配置刪除提及它/ application.config.php

<?php 
    return array(
     'modules' => array(
     'Application', 
     'A', 
     'B', <--- A doesn't work if B is here 
    ), 

如果我的模塊陣列中圍繞交換甲&上面B,則B將獲得轉發到將工作應用程序模塊和A將工作。所以它似乎有超過1個子域的問題。有沒有人有任何想法/遇到同樣的事情?

+2

我認爲這是因爲你的路由名稱是相同的。也許嘗試一個廣告和B廣告的路線名稱,看看會發生什麼。 – Diemuzi

+1

你說得對,耶穌我不敢相信我沒有發現。在昨天盯着那幾個小時! – deadtoy

+0

你能關閉這個問題嗎,所以它不會停留在沒有答案的列表中? – DASPRiD

回答

2

發生這種情況是因爲您的路由名稱相同。我會嘗試路線名稱的廣告和B廣告,這應該可以解決您的情況。

最後,配置合併在一起。所以它就像一個數組,當最後一個數組合並時,它會覆蓋之前的所有數據。