Что формирует заголовки и т. п. в MVC?

В моём движке алгоритм такой:

1. Фронт контроллер анализирует запрошенный URL, определяет нужный контроллер, действие и параметры. Например, контроллер - статьи, действие - показать главную раздела статей.
2. Контроллер дёргает метод модели, который загружает из БД каталоги статей и передаёт полученный данные на View, командуя подгрузить шаблон для главной страницы статей и общий шаблон для всех страниц сайта (первое встравивается во второе).
3. View выполняет запрошенные действия с помощью метода draw, передавая шаблонам данные каталогов, которые они должны уже в цикле отрисовать.

НО: в полученных моделью данных нет таких полей как заголовок страницы, мета-описание, мета-теги и проч.
Вопрос - где всё это указывать? Варианты:

1. Прописывать переменные в шаблоне для главной страницы статей (но разве можно задавать переменные в шаблоне View?).
2. Определять переменные в методе контроллера статей, передавать их модели и затем View (как-то длинно).
3. Задавать значения переменных в методе модели. Но это вообще абсурд, так как назначение метода модели у меня - получение данных из БД.
4. Создать еще один метод модели для получения из какого-нибудь ini файла данных для запрошенной страницы (тоже как-то слишком сложно).

Я просто в растерянности... Чем же мне формировать заголовок HTML страниц?
  • Вопрос задан
  • 253 просмотра
Пригласить эксперта
Ответы на вопрос 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Ты неверно формулируешь задачу.
По сути, это банальное заполнение шаблона переменными.
А переменные мы получаем из модели. Вот и всё.

Поскольку мета-теги - это редактируемые данные, то они должны лежать в БД.
То есть, для каждого контроллера должны быть прописаны в отдельной таблице дефолтный тайтл, теги и прочее.
Которые тянутся на автомате прототипом экшена.

При этом конкретный экшен может перезаписать любую из переменных, тайтл к примеру.

Если есть какая-то конкретная логика формирования той или иной переменной в зависимости от содержания страницы - она дергается опять же в экшене
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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