Добрый вечер! Недавно начал писать небольшой проект ради практики на основе MVC и тут возник вопрос: что писать в контроллер, а что в модель? Естественно вся работа с БД у меня в моделях. В контроллере правильно писать только обработку пользовательских запросов при помощи моделей и передавать ее во View? И, например, у меня такой вид: site.ru/controller/action/ А в controller3 и controller5, например, очень схож код для action2. Я полагаю, что нужно куда - то вынести этот код, чтобы он не дублировался при описании данного экшена в контроллерах, т.е. либо в модель, но не очень представляю нормальную реализацию этого подхода, либо в родительский класс для контроллеров, но что, если метод с таким названием (action2 в моем примере) в родительском классе уже занят? Делать условия? Надеюсь, доступно объяснил)
Ты читал вообще, что такое " MVC " ? Не понимаю, что значит занят? Выполняется или всм, то, что он уже определен? Если, то, что определен мол - то переопредели, прочитай про перегрузку методов.
Нет никакого правильного MVC. Это совет. Абстракция. Если кратко - логика, желательно, не должна быть макаронно перемешана с представлением. Если доходчиво - надо строить архитектуру так, чтобы перепиливание представления никак не сказывалось на логике работы. Это ваше MVC вообще можно реализовать в одном классе, в котором будет и контроллер и вьюха и обработчик модели, и все они будут независимы друг от друга. А можно вообще реализовать внутри одной-единственной процедуры, последовательно отрабатывающей секции кода, которые только визуально, для кодера, разделены пустыми строками. Сначала 5 строк на модель, потом 20 строк на работу контроллера и, потом 10 строк на генерацию вьюхи. И это тоже, в своем масштабе, будет MVC. Абстрагируйтесь. Вы проектируете архитектуру, а не архитектура выворачивает вам руки. MVC не дает прибавку к скорости кода, росту продаж, длине половых органов и уровню доходов. MVC лишь упрощает дальнейшее сопровождение кода и дает бонус на +5 к гибкости. Делайте, как вам удобно, только и всего. Главное, чтобы это было сделано разумно.
Обычно реализуется в базовых классах сущности. И в контроллерах просто создаёте объекты с нужными параметрами. Либо храните в толстой модели.