@Septdir IMHO, данные должны обрабатываться в контроллере, а модель ничего не должна об этом знать.
Например, в одном моем компоненте требуется сохранять файлы и доп.данные в другие таблицы, но только после успешного сохранения основных данных в основную таблицу. Как все это делать в validate()?
И странно было бы видеть, как validate(), кроме проверки валидности, должна еще получать всякие $_FILES и $_REQUEST, их обрабатывать, сохранять...Я бы никогда не догадался такое в ней искать .
Конечно, MVC - условное разделение и у каждого свой вкус, но лучше придерживаться некоторых общих правил, код-то по-любому нужно писать.
По сути функция validate проверяет значения и возвращает $validateData в контролер последующий для передачи в функцию save.
Для этого кроме преданной в нее $data из контролера, она еще много чего получает. В случае с файлами ничего плохо в том что там будет
их получениене будет. Там же их и проверить. Тип файлов, если поле обязательное, то и заполненость ну и т.д и вернуть уже в нужном виде добавив к массиву $validateData['files']
Сама заливка уже будет в функции модели save после сохранения.
По сути все что делает контролер. Это получает данные через jinput передает их функциям модели сначала в validate потом в save и делает редирект.
Обработка, проверка данных к примеру сжать json, поменять alias и т.д делается в model или table(кстати с table мне не особо нравиться, когда все данные формируются в table а проверку ailas делают в model). и передаются в table.
Так сделано в Joomla.
Если по хорошему, можно сделать так
Контролер: получили все данные ->
Модель: проверили ->
Контролер: сформировали в нужный вид, если надо обрщаемся в моедль ->
Модель: залили в базу итем вернули id ->
Контролер: получили файлы ->
Модель: залили файлы(отдельная функция)->
Контролер: редирект или вьюху
Но опять таки момент спорный