2010-11-26 10 views
2

助けてください!私はZendの初心者で、私が取り組んでいるCMSプロジェクトのデフォルトルーティングを変更したいと思っています。Zend Routeキャッチオール

コントローラーが存在しない場合は、どのようにzendで「すべてをキャッチ」ルートを作成しますか? (をPagesControllerを

mydomain.com/slugスラグとslug1は、指定されたデフォルトのコントローラへのparamsとして渡すことができ

mydomain.com/slug1

を:

は、私のようなリンクを作成しようとしています)私はDBから適切なコンテンツを取得できます。

私は何か助けに感謝します!

<?PHP 
class PageRouter extends Zend_Controller_Plugin_Abstract { 

    public function preDispatch(Zend_Controller_Request_Abstract $req) { 
    $dispatcher = Zend_Controller_Front::getInstance()->getDispatcher(); 
    if (!$dispatcher->isDispatchable($req, $req)) { 

     $req->setModuleName('default'); 
     $req->setControllerName('page'); 
     $req->setActionName('page'); 
    } 
    } 

} 

とを確認してください。それを行うには:)

答えて

2

一つの方法は、要求がそうディスパッチ可能であるかどうかをテストするシンプルなコントローラプラグインを記述し、そうでない場合、あなたのページのコントローラ/アクションに送信することですあなたはfrontcontrollerに登録:

bootstrap.phpの

protected function _initFrontControllerPlugins() { 
    $this->bootstrap('FrontController'); 

    $fc = $this->getResource('FrontController'); 

    $pluginPageRouter = new PageRouter(); 
    $fc->registerPlugin($pluginPageRouter);  
} 
+0

あなたは命を救う人です!私はとても近いので、プラグインでisDispatchableを使用する方法が不明でした。ご協力ありがとうございますtimdev !! – Cullen2010

0

代わりpreDispatをオーバーライドしますch、あなたはrouteShutdownでこれを行うこともできます。これは私のためにこれを得るための唯一の方法でした。