サイトがメンテナンスに設定されているかどうかを検出しているコントローラープラグインがあります。メンテナンスコントローラーに_forwardして 'sorry ...'メッセージを表示します。コントローラープラグインでZend _forward
リダイレクトを使用したくない場合は、ユーザーの現在のURLが変更されますが、_forwardはZend_Controller_Actionの保護されたメソッドなので、コンテキストから呼び出すことはできません。どうすればよいですか?
サイトがメンテナンスに設定されているかどうかを検出しているコントローラープラグインがあります。メンテナンスコントローラーに_forwardして 'sorry ...'メッセージを表示します。コントローラープラグインでZend _forward
リダイレクトを使用したくない場合は、ユーザーの現在のURLが変更されますが、_forwardはZend_Controller_Actionの保護されたメソッドなので、コンテキストから呼び出すことはできません。どうすればよいですか?
:あなたのコントローラ(複数可)を使用すると、アクションのような$this->_forward('maintenance-action');
何か、あなたの保守作業ではありません、あなたのサイトはメンテナンスモードとであると言うフラグをチェックすることができinit()
方法でプラグインのメソッドpreDispatch
が呼び出された場合、リクエストはディスパッチされません。したがって、要求に応じてコントローラとアクションを設定するだけで、「転送」することができます。
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
if ($this->isMaintenanceMode()) {
$request->setControllerName('error');
$request->setActionName('maintenance');
}
}
プラグインは_forward()を正しく実行できません。
// .. in your action controller
public function init() {
$maintenanceMode = checkTheFlagYourPluginSet();
// .. other code removed omitted
if ($maintainenceMode && $this->_request->getActionName() != 'maintenance-action') {
// return so that nothing else gets executed in the init()
return $this->_forward('maintenance-action');
}
}
私はその仕組みが好きです。なぜ私はそれを考えなかったのですか? ;) –
素敵な考え、ありがとう – Ashley