0
Zend_Controller_Front::getInstance()->setParam('useDefaultControllerAlways', true);
Zend_Controller_Front::getInstance()->getRouter()->addRoute('taxes', new     Zend_Controller_Router_Route_Static('taxes',
                    array('controller' => 'config', 'action' => 'taxes'))
                );

ブートストラップファイルのプラグインのように呼び出された場合、これが機能しない理由を知っている人はいますか? ブートストラップで直接呼び出された場合 - すべて正常に動作します。プラグインは preDispatch() メソッドで動作するように設定されています

4

2 に答える 2

0

preDispatch() は、アクションがディスパッチャーによってディスパッチされる前に呼び出されます。このコールバックにより、プロキシまたはフィルタの動作が可能になります。

これは、プレディスパッチ ルーティングが既に発生していることを意味します。必要なのはおそらく routeStartup です。これは、リクエストをルーティングする前に呼び出されるためです。

routeStartup() は、 Zend_Controller_Front がルーターで呼び出す前に呼び出され、登録されたルートに対してリクエストを評価します。

于 2012-05-19T12:55:50.283 に答える
0

preDispatch が呼び出された時点ですでにルーティングが行われているためです。代わりに routeStartup を使用することをお勧めします。コントローラ プラグイン メソッドの完全なリストについては、 http : //framework.zend.com/manual/en/zend.controller.plugins.html#zend.controller.plugins.usingを参照してください。

于 2012-05-19T12:39:16.873 に答える