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

私の静的コンテンツの URL は次のとおりです。site.com/faq site.com/privacy ...

これらは機能しますが、ではなくをsite.com/register使用するなどの他の機能もありますが、この動作に驚いたとは言えません。StaticControllerIndexController

これらの静的ページ (私たちについて、用語、条件など) は、翻訳のために 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 に答える