@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 просмотров
Решения вопроса 2
rpsv
@rpsv
делай либо хорошо, либо никак
Правила валидации - это часть модели.
MVC в том и суть, что вы можете менять местами все его составные части:
1. Использовать M в разных C
2. Отображать M с помощью разных V
3. Выбирать V с помощью C в зависимости от запроса
Ответ написан
villiwalla
@villiwalla
HTML-верстка
Правила валидации либо в свойстве модели или контроллера. Контроллер надо наследовать от того что создаёт вьюху
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
11 мая 2024, в 00:19
1000 руб./за проект
10 мая 2024, в 23:51
30000 руб./за проект
10 мая 2024, в 23:33
2500 руб./за проект