Если вы проверяете данные на стороне клиента (т. Е. Проверка Javascript), которых абсолютно недостаточно и совсем не безопасно, вы должны реализовать их в View.
Если вы проверяете данные на стороне сервера, и ваша проверка не требует бизнес-логики приложения (т. Е. Вы не проверяете, имеет ли пользователь достаточный кредит в своей учетной записи), вы должны выполнить проверку в контроллере.
Если для проверки требуется бизнес-логика, внедрите ее в модель и вызовите ее через контроллер.
Проверка обратной связи не годится, так как она создает большое давление и задержку, и единственное преимущество - для программиста (не учитывается).
Вы можете использовать регулярные выражения для большей части проверки, которая имеет одинаковый (почти) синтаксис в PHP и JS.