Уведомления не появляются на странице - PullRequest
0 голосов
/ 01 августа 2020

Я работаю с PHP OOP над разработкой собственной системы управления. По сути, я создал страницу, на которой администраторы могут добавить еще одного настраиваемого администратора. Вот код:

if (isset($_POST['submit'])){
    $username = $_POST['uname'];
    $email = $_POST['email'];
    $password = $_POST['pass'];
    $groups = $_POST['groups'];
    if (filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
        $notice['email_validation'] = "The email that you have entered is not a valid one";
    }else{
        $registration = new Admin();
        $notice[] = $registration->CheckUname($username,$email,$password,$groups,$level);   
    }   
    $notice = $registration->getNotice();
}

Как вы можете видеть в конце, я указал переменную с именем $notice, которая вызывает метод getNotice(), и это выглядит так:

public function getNotice()
{
    return $this->notice; 
}

А переменная notice здесь установлена ​​protected. Таким образом, сама форма работает нормально, но она просто не показывает мне никаких сообщений об ошибках / успехах.

На самом деле я добавил также эти коды на главную страницу, содержащую форму, для вывода сообщений об ошибках / успехах :

if(isset($notice['email_validation'])) {
    echo "
    <div class='alert alert-danger'>
        <strong>Hey!</strong> ".$notice['email_validation'].".
    </div>
    ";
}
if(isset($notice['username_exists'])) {
    echo "
    <div class='alert alert-danger'>
        <strong>Hey!</strong> ".$notice['username_exists'].".
    </div>
    ";
}
if(isset($notice['email_exists'])) {
    echo "
    <div class='alert alert-danger'>
        <strong>Hey!</strong> ".$notice['email_exists'].".
    </div>
    ";
}
if(isset($notice['success_message'])) {
    echo "
    <div class='alert alert-success'>
        <strong>Hey!</strong> ".$notice['success_message'].".
    </div>
    ";
}

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

Также обратите внимание, что страница не возвращает никаких ошибок PHP, пока отчет об ошибках включен!

1 Ответ

0 голосов
/ 01 августа 2020

Похоже, что проблема заключается в следующем коде:

if (filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
    $notice['email_validation'] = "The email that you have entered is not a valid one";
} else {
    $registration = new Admin();
    $notice[] = $registration->CheckUname($username,$email,$password,$groups,$level);   
}   

$notice = $registration->getNotice();

$notice[], которое вы используете внутри оператора if, заполняется сообщением, которое у вас есть в первом случае, или выводом $registration->CheckUname вывод.

Затем вы заменяете содержимое $notice[] выводом $registration->getNotice();

К сожалению, я не могу сказать, что это проблема на 100%, поскольку ваш код может переопределить значение $notice в других местах, или я не знаю, что еще вы могли бы сделать с остальной частью вашего кода, но пока что для меня это проблема.

Попробуйте удалить строку $notice = $registration->getNotice(); и посмотрите, работает ли ваш код. Если это так, то вам следует попытаться переписать свой код logi c, чтобы он работал так, как вы хотите, либо путем заполнения массива значениями уведомлений, либо путем использования класса контейнера уведомлений для сбора всех уведомлений и возврата массива позже. используя $registration->getNotice().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...