0

ビュースクリプトが呼び出される前に、どのコントローラーがルーティングされているかを検出する必要があります(したがって、postDispatch()は適切ではありません)。

class PerchProvider extends Zend_Controller_Plugin_Abstract
{
public function routeShutdown(Zend_Controller_Request_Abstract $request)
{
    //if (--CONTROLLERNAME-- != "Error") {

    include APPLICATION_PATH . '/../public/perch/runtime.php';

    // }
}
}

コントローラの名前にアクセスするにはどうすればよいですか?

乾杯

4

2 に答える 2

0

興味深いことに、とまり木をZendと統合しています。

ドキュメントによると、getControllerNameはZend_Controller_Request_Abstractのメソッドです

于 2012-04-11T09:36:38.367 に答える
0

ビューレンダラーよりも優先度の高いアクションヘルパーを登録する必要があります。

  1. Bootstrap.phpで:

    class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
    {
        protected function _initPerch()
        {
            require APPLICATION_PATH . '/controllers/helpers/Perch.php';
            Zend_Controller_Action_HelperBroker::getStack()->offsetSet(2,
                    new Application_Controller_Helper_Perch());
        }
    }
    
  2. application / controllers / helpers / Perch.php:

    <?php
    
    class Application_Controller_Helper_Perch 
            extends Zend_Controller_Action_Helper_Abstract
    {
        public function postDispatch()
        {
            $request = $this->getActionController()->getRequest();
            $controller = $request->getControllerName();
            if ($controller != 'error') {
                include APPLICATION_PATH . '/../public/perch/runtime.php';
            }
        }
    }
    
于 2012-04-11T10:58:43.617 に答える