1

我对 Zend 很陌生(阅读有关路由器和控制器的文档)。

我的StaticControllerIndexController

class StaticController extends Zend_Controller_Action
{
    public function displayAction()
    {
        $page = $this->getRequest()->getParam('filename');
        $this->render($page);
    }
}

class IndexController extends Zend_Controller_Action
{
    public function indexAction()
    {
        $albums = new Application_Model_DbTable_Albums();
        $this->view->albums = $albums->fetchAll();
    }
    public function registerAction()
    {
        ...
    }
}

应用程序.ini:

resources.router.routes.staticpage.route = /:filename
resources.router.routes.staticpage.defaults.controller = static
resources.router.routes.staticpage.defaults.action = display

我的静态内容网址是:site.com/faq site.com/privacy ...

这些工作,但是其他工作,例如site.com/register使用StaticController而不是IndexController,我不能说我对这种行为感到惊讶。

这些静态页面(关于我们、术语和条件...)需要包含在 zend 逻辑中进行.po翻译。

我可以在 Zend 框架之外想出许多不同的方法来实现这一点,但我真的很想以正确的zend方式来做。

如何区分静态和动态内容,并且仍然保留漂亮的 url?

任何帮助将非常感激 !

4

2 回答 2

1

你可以这样做:

resources.router.routes.staticpages.route = "/:filename"
resources.router.routes.staticpages.defaults.controller = static
resources.router.routes.staticpages.defaults.action = display
resources.router.routes.staticpages.reqs.filename="(list|of|static|pages)"

如果您不知道“reqs”是什么,那很简单。对于“reqs”中指定的每个参数,您指定它应该匹配的正则表达式以使用此路由。

但是我个人会在每个静态页面中使用一个动作,而不是在单个动作中使用一个参数,这需要这条路线:

resources.router.routes.staticpages.route = "/:action"
resources.router.routes.staticpages.defaults.controller = static
resources.router.routes.staticpages.reqs.action="(list|of|static|pages)"

计划有一天您可能需要不同的逻辑来呈现一些静态页面

于 2011-09-23T22:14:27.773 回答
0

您应该考虑为静态内容使用前缀,以便路由器知道您正在尝试提取静态内容,而不是尝试引用 IndexController 中的操作。

resources.router.routes.staticpage.route = /static/:filename
resources.router.routes.staticpage.defaults.controller = static
resources.router.routes.staticpage.defaults.action = display
于 2011-09-23T20:58:04.163 回答