2009-07-29 152 views
3

我試圖在我正在處理的Zend Framework網站上爲管理面板實現鏈接鏈接。我正在使用以下配置文件,希望「admin」路由使用「/ admin」路由,而「adminLogin」路由使用「/ admin/login」路由。與Zend框架鏈接的鏈接

<?xml version="1.0" encoding="UTF-8"?> 
<routes> 
    <admin> 
     <route>admin</route> 
     <defaults> 
      <module>admin</module> 
      <controller>index</controller> 
      <action>index</action> 
     </defaults> 
     <chains> 
      <adminLogin> 
       <route>login</route> 
       <defaults> 
        <module>admin</module> 
        <controller>login</controller> 
        <action>index</action> 
       </defaults> 
      </adminLogin> 
     </chains> 
    </admin> 
</routes> 

儘管如此,只有「adminLogin」的作品。路由「admin」路由到默認的模塊/控制器/動作。

我認爲我必須錯過鏈接工作方式。 任何反饋非常感謝

+0

所以,路由`admin`不匹配,當你嘗試導航到`/ admin`你得到默認模塊的索引控制器的索引行爲? – jason 2009-07-30 13:40:47

+0

這正是發生的情況。 – 2009-07-30 14:12:06

回答

1

鏈條的父路線(在本例中爲admin)實際上不會像真實路線那樣匹配。它的唯一目的就是抓住最高級別的比賽,然後讓它的鏈子處理實際的路線。

儘量明確地添加一個空的靜態路由,您鏈的頂端,像這樣:

<chains> 
    <index type="Zend_Controller_Router_Route_Static"> 
     <route></route> 
     <defaults module="admin" controller="index" action="index" /> 
    </index> 
    <login> 
     <route>login</route> 
     <defaults> 
       <module>admin</module> 
       <controller>login</controller> 
       <action>index</action> 
     </defaults> 
    </login> 
</chains> 

了一些更多的細節和鏈接路線的陷阱見an older answer of mine

另外,值得注意的是,路由器自動將連鎖路由名與短劃線連接起來,因此,如果您需要明確使用登錄路由,它現在將被命名爲admin-adminLogin。我建議將它重命名爲login

-2

這是錯誤的使用鏈。

只需爲/ admin和/ admin/login聲明一個路由。如果您使用多個路線類來確定一條路線的分辨率(如主機名和路徑),鏈更有用。