Задать вопрос
@kot-samolet

Где осуществлять проверку формы в MVC?

Приходит POST-запрос на регистрацию юзера. Полей много, где-то 10. Валидацией полей занимается отдельный класс Validator, причём его методы настроены на каждый тип поля в отдельности. Если валидировать данные в контроллере, то получится такой метод контроллера:
public function addData()
    {
        $v = new Validator();
        $mail = $v->checkEmail($_POST['email']);
        $pass = $v->checkPwd($_POST['pass1'], $_POST['pass2']);
        $bdate = $v->checkBdate($_POST['bdate']);
        $adress = $v->checkAddr($_POST['adress']);
        $company = $v->checkCom($_POST['company']);
        $wife = $v->checkCom($_POST['wife']);
        $city = $v->checkCity($_POST['city']);
        $document = $v->checkDoc($_POST['document']);
        $husb = $v->checkHusb($_POST['husb']);
        $num = $v->checkNum($_POST['num']);
        
        if('всё верно'){
            $model = new User();
            $result = $model->createUser();
        } else {
            return $error;
        }
        
        $view = new View();
        $show = $view->RegSuccess($result);
        return $show;
    }

Это нормально? С одной стороны пишут что валидацию надо в контроллерах а не в модели делать, с другой, что контроллеры должны быть тонкие.

Ещё вопрос: если контроллер занимается валидацией, стот ли его унаследовать от класса валидатор? Тогда он будет обращаться к методам родителя и не надо будет делать $v = new Validator();
  • Вопрос задан
  • 270 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 2
rpsv
@rpsv
делай либо хорошо, либо никак
Правила валидации - это часть модели.
MVC в том и суть, что вы можете менять местами все его составные части:
1. Использовать M в разных C
2. Отображать M с помощью разных V
3. Выбирать V с помощью C в зависимости от запроса
Ответ написан
villiwalla
@villiwalla
HTML-верстка
Правила валидации либо в свойстве модели или контроллера. Контроллер надо наследовать от того что создаёт вьюху
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы