我对Zend很新(阅读有关路由器和控制器的文档)。
我的StaticController
和IndexController
:
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()
{
...
}
}
application.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
,我不能说我对这种行为感到惊讶。
这些静态页面(关于我们,术语和cond ......)需要包含在.po
翻译的zend逻辑中。
我可以想到在Zend框架之外实现这一目的的许多不同方法,但是我们真的希望以正确的 zend 方式实现这一点。
如何区分静态和动态内容,并保留漂亮的网址?
非常感谢任何帮助!
答案 0 :(得分: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'中指定的每个参数,您指定它应匹配的正则表达式以便使用此路由。
但我个人会在一个动作中使用每个静态页面而不是param的动作,这需要这个路径:
resources.router.routes.staticpages.route = "/:action"
resources.router.routes.staticpages.defaults.controller = static
resources.router.routes.staticpages.reqs.action="(list|of|static|pages)"
计划有一天你可能需要不同的逻辑来渲染一些静态页面
答案 1 :(得分:0)
您应该考虑为静态内容使用前缀,以便路由器知道您尝试提取静态内容而不是尝试引用IndexController中的操作。
resources.router.routes.staticpage.route = /static/:filename
resources.router.routes.staticpage.defaults.controller = static
resources.router.routes.staticpage.defaults.action = display