Как поместить сообщения об ошибках в Prestashop 1.7 внутри поля формы? - PullRequest
0 голосов
/ 10 ноября 2019

Я создаю модуль recaptcha для фронт-офиса, весь код в порядке, но сообщение об ошибке идет не туда.

Я использую Prestashop 1.7.6.1, сообщение об ошибке печатаетсяв верхней части фронт-офиса, и мне нужно сообщение об ошибке для печати внутри поля формы.

Я установил сообщение об ошибке следующим образом: modules / recaptcha / recaptcha.php

public function hookActionRecaptchaAccountValidation()
{
    if (!$this->isValidateRecaptcha()) { // Logic to validate recaptcha
        // Set my error message
        $context->controller->errors[] = $this->l('It was not possible to validate the reCaptcha.');
    }
}

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

class AuthController extends AuthControllerCore
{
    public function initContent()
    {
        if(Tools::isSubmit('submitLogin')){
            // Execute my custom hook
            Hook::exec('actionRecaptchaAccountValidation');

            if(sizeof($this->context->controller->errors)){ // Verify if has error message
                $login_form = $this->makeLoginForm()->fillWith(
                    Tools::getAllValues()
                );    
                $this->context->smarty->assign([
                    'login_form' => $login_form->getProxy(),
                ]);
                $this->setTemplate('customer/authentication');
                FrontController::initContent();
                return;
            }
        }

        parent::initContent();
    }
}

... Итак, как я могу поставитьсообщение об ошибке внутри поля формы, как в этом примере?

Пожалуйста, проверьте это изображение, где я показываю именно то, что мне нужно. https://i.imgur.com/Syzrf2C.png

1 Ответ

0 голосов
/ 11 ноября 2019

Я думаю, вам лучше заглянуть в класс CustomerLoginForm и рассмотреть возможность его переопределения. Метод submit может быть именно тем, что вы ищете. Просто добавьте еще одну проверку и определите свою ошибку с помощью $this->errors[''][] construction

...