@SHNM

Почему работает только первый массив?

Здраствуйте! Я написал вот такой код
public function validation ($data, $post) {
        foreach ($data as $name => $rules) {
            foreach ($rules as $rule_name => $value) {
                switch ($rule_name) {
                    case 'required':
                        if ($value && empty($post[$name])) {
                            $this->message = $data[$name]['message'];

                            return false;
                        }
                        return true;

                        break;
                }
            }
        }
    }

Вызываю я его вот таким образом
$data = [
                'password' => [
                    'required' => true,
                    'message' => 'Заполните пароль'
                ],
                'email_username' => [
                    'required' => true,
                    'message' => 'Заполните имя'
                ],
            ];
            if (!$this->model->validation($data, $_POST)) {
                $this->view->sendMessage('error', [
                    'message' => $this->model->message
                ]);
            }

Проблема в том, что если я не заполню пароль, то он сработает, а вот если я не заполню email, то он не сработает. Смотрите ещё, если я поменяю массив password в низ, то email будет работать, а пароль нет, ахахаа, че за духи? Помогите пожалуйста!

Спасибо!
  • Вопрос задан
  • 266 просмотров
Пригласить эксперта
Ответы на вопрос 1
index0h
@index0h
PHP, Golang. https://github.com/index0h
Что-то у вас за 5-6 лет стажа вопросы все чудесатей и чудесатей.

Смотрите ещё, если я поменяю массив password в низ, то email будет работать, а пароль нет, ахахаа, че за духи?

Это не духи, это незнание синтаксиса. У вас происходит выход (return) из метода validation (лучше используйте глаголы в названиях) после первой проверки required.

Странно, что у вас message фактически является rule, что как бы не верно.

Что касается в принципе вашего решения - все очень печально.
Что будет, если проверок для одного поля нужно две?
Что будет, если поле может удовлетворять одному из нескольких правил, или например двум из трех?

Еще раз, не страдайте фигней. Чем универсальнее решение вы будете пытаться придумать - тем более сложным оно будет в поддержке и использовании.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы