Как отобразить ошибку на PHP Плите шаблонизатора двигателя - PullRequest
0 голосов
/ 13 января 2020

Я пытаюсь настроить пластины php для одного из моих проектов.

Один из методов в модели проверяет адрес электронной почты, предоставленный новым пользователем, и сообщает если электронная почта, которую они пытаются использовать, существует или нет.

Что-то вроде

class UserModel extends BaseModel
{
    public $errors = [];

    public function validate()
    {
        if (filter_var($this->request->post['email'], FILTER_VALIDATE_EMAIL) === false) {
            $this->errors[] = 'Invalid email';
        }
        if ($this->emailExists($this->request->post['email'])) {
            $this->errors[] = 'Email already exist';
        }
    }

    protected function emailExists($email)
    {
        $sql = 'SELECT * FROM user_account WHERE email = :email';
        -----
        -----
        $stmt->execute();
        return $stmt->fetch() !== false;
    }
}

и в контроллере

public function register()
{
    $this->load->getModel('UserModel');

    if ($this->model_UserModel->registerUser($this->request->post)) {
        echo "Success ... load (redirect) second page";
    } else {
        $data ['error'] = $this->model_UserModel->errors;
        echo $this->template->render('home/home', $data);
    }
}

Если электронная почта существует, и я дам дамп $ В data ['error'] написано "Email Уже существует", как определено в методе validate в UserModel.

Теперь я пытаюсь получить сообщение об ошибке в моем домашнем шаблоне, добавив эти строки в tpl. file

<?php if (!empty($this->e($errors))): ?>
    <?php foreach($errors as $error): ?>
        <li><?=$this->e($error)?></li>
    <?php endforeach ?>
<?php endif;?>

Но теперь, если я нажимаю на страницу регистрации, шаблон говорит:

Примечание: неопределенная переменная: ошибки в C: \ xampp \ htdocs \ vem \ App \ Views \ template \ register \ registeruser.tpl в строке 14

Как мне двигаться вперед?

Я даже пытался установить $this->e($error) = '', но наа, показывает другую ошибку.

Ответы [ 2 ]

0 голосов
/ 20 февраля 2020

Вам нужно использовать error, а не errors:

<?php if (!empty($this->e($error))): ?>
    <?php foreach($error as $error_item): ?>
        <li><?=$this->e($error_item)?></li>
    <?php endforeach ?>
<?php endif;?>
0 голосов
/ 17 февраля 2020

На вашем контроллере вы устанавливаете переменную error, но в шаблоне вы обращаетесь к переменной errorss). Попробуйте с

<?php if (@$error)): ?>
    <?php foreach($error as $e): ?>
        <li><?=$this->e($e)?></li>
    <?php endforeach ?>
<?php endif;?>
...