2013-12-12 59 views
0

我遇到了讓我的路由正常工作的問題。Zend Framework 2路由

在我的後端,我有一個模塊calles頁面,用戶可以在其中創建他們想要的內容的自定義頁面。

URL的是這樣的:

http://www.domain.com/name-of-page/5/p 
http://www.domain.com/name-of-page2/24/p 
http://www.domain.com/pagename/10/p 

起初我的頁面名稱是動態 第二個值是,我用它來得到正確的頁面返回的頁面的ID。 的一個值是「P」,我想用作indentifier的路線,所以它知道它的頁面

  'p' => array(
      'type' => 'segment', 
      'options' => array(
       'route' => '[/:name][/:id]/:p', 
       'defaults' => array(
        'controller' => 'Page\Controller\Frontend', 
        'action'  => 'index', 
       ), 
       'constraints' => array(
        'id'  => '[0-9]+', 
       ), 
      ), 
     ), 
+1

/:p應該是/ p –

+0

糟糕當然,我檢查了20次代碼,但沒有看到明顯的...... –

+0

如果你不改變它,你的路線仍然匹配'http:// domain.com // p';)在這種情況下,我想你會遇到一個錯誤。 – Sam

回答

0

首先,我的建議是讓頁面-URI標識符前面加上相當apending。其次,瞭解:foo是一個名爲foo的參數。另一方面,[:foo]可選參數foo

沸騰下來,我覺得你的路由定義應該是這樣的:

'route'  => '/p[/:name]/:id', 
'constraints' => array(
    'name' => '[\d\w]+', // [a-zA-Z-0-9_]+ 
    'id' => '\d+' 
) 

這將匹配以下途徑:

你不會能夠有一個「頁面路線」沒有ID但你可以有一個「頁面路線」withotu 名稱。無論如何,最終需要的只是ID。當然,你可以很容易地改變順序,但我個人認爲這是最好的解決方案;)