繁体   English   中英

Zend框架:路由器

[英]Zend Framework: Router

那是我的两个路由器:

->addRoute('viewTextMaterial', new Zend_Controller_Router_Route(':mCat/:mCatSub/:mId/:mTitle', array('controller' => 'index', 'action' => 'viewtextmaterial')))
->addRoute('viewNews', new Zend_Controller_Router_Route(':nCat/:nId/:nTitle/:page', array('controller' => 'index', 'action' => 'viewnews')))

在index.phtml文件中,我添加以下内容:

<a href="<?= $this->url(array('mCat' => 'Test', 'mCatSub' => 'Test', 'mId' => 7, 'mTitle' => 'Test'), 'viewTextMaterial') ?>">Test</a>

经验值 用于viewnews URL:

<a href="<?= $this->url(array('nCat' => News, 'nId' => 5, 'nTitle' => Some title, 'page' => 1), 'viewNews') ?>">some text</a>

但是,为什么当我单击href时,它将我重定向到“ viewnews”?

根据我的经验(不是很好:))我认为当您在名称前面使用冒号时,在定义路由器时,例如

'/:mCat/:mCatSub/:mId/:mTitle',
      array(
           'controller' => 'index', 
           'action'    => 'viewtextmaterial'
            )

您告诉路由器要做的是将遵循上述格式的所有URL路由('/:mCat /:mCatSub /:mId /:mTitle'),然后路由到您在此处提到的控制器/操作。 例如。

someController /动作/ x / y

要么

anoCont / act / a / b

将被路由到相同的控制器/动作。

因此,在您的情况下,您正在定义两个具有相同选项的路由器(这会造成歧义),并且默认情况下,使用第二个定义的路由(从下至上匹配)。

你可以用这样的东西

'/test/:mCatSub/:mId/:mTitle',
          array(
               'controller' => 'index', 
               'action'    => 'viewtextmaterial'
                )

因此,以“ test”作为控制器(在url中)开头的所有内容现在都将路由到您所需的控制器/视图。

希望它能工作.. :)(如果不能,请赐教我:))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM