Magento: расширение контроллера учетных записей клиентов для добавления действий к шагам забытого пароля

Мы пытаемся добавить пару действий в AccountController, чтобы добавить еще одно действие после действия Forgotpasswordpost. Проблема в том, что если мы добавим действие в логику preDispatch, чтобы убедиться, что вам не нужно входить в нее, она все равно перенаправляет обратно на страницу входа.

public function preDispatch()
    {
        // a brute-force protection here would be nice

        parent::preDispatch();

        if (!$this->getRequest()->isDispatched()) {
            return;
        }

        $action = $this->getRequest()->getActionName();
        if (!preg_match('/^(create|login|logoutSuccess|forgotpassword|forgotpasswordpost|confirm|confirmation|newactionhere)/i', $action)) {
            if (!$this->_getSession()->authenticate($this)) {
                $this->setFlag('', 'no-dispatch', true);
            }
        } else {
            $this->_getSession()->setNoReferer(true);
        }
    }

Это не работает, потому что мы сначала вызываем родителя, который также выполняет это, но, конечно, preg_match не совпадает, и он запускает метод authenticate, который запускает метод $ action-> getResponse () -> setRedirect ($ url) который, конечно, устанавливает заголовок, и когда он возвращается к нашему коду, это не имеет значения, а затем перенаправляет.

Мы могли бы просто удалить вызов родителя, но я не уверен, что это лучший подход, так как родитель также вызывает своего родителя, который запускает некоторые вещи для установки области макета, а затем также вызывает родительский метод. Я думал просто позвонить родителю с Mage_Core_Controller_Front_Action, но не был уверен, что это был правильный подход.

Ответы на вопрос(5)

Ваш ответ на вопрос