Про те, як же підключити smarty до mvc Патерно

Вітаю, дорогі друзі!

Сьогодні я вам поведу про те, а як же все таки підключити шаблонизатор Smarty до сайту, що працює на MVC Патерні.

Почнемо, я думаю з найголовнішого, я попереджаю вас про те, що даний метод ПРОТИПОКАЗАНИЙ для кокого-небудь PHP фреймворку, запитаєте ви:

- А тому, що застосовується в даному уроці спосіб, спотворить роботу фреймворка, про те як підключити Smarty до фреймворку я розповім в наступному уроці.

Викачуємо останню Stable версію.

Йдемо далі, переходимо в папочку з вашим сайтом, і створюємо в корені директорію, і припустимо, назвемо її Smarty або. Хм, так як хочете називайте, не моє діло :) А тепер найцікавіше, нам потрібно розширити наш найголовніший контролер від класу шаблонізатора, це звичайно нерозумно, але можна зробити і по іншому, завести спеціальний клас Views, який буде працювати у вашому MVC паттерне з відображеннями, насправді у мене так і зроблено, але зазвичай мені зустрічається ось така архітектура:

Все, більше в ній нічого немає, це не зовсім правильно, я думаю всім зрозуміло чому? Тому, що контролер не повинен працювати з відображеннями, він повинен пов'язувати модель і відображення, а ось правильна структура

А тепер все правильно, контролер грає роль моста, модель працює з бд, а вьювс з відображеннями, все круто, все логічно

А тепер безпосередньо перейдемо до суті уроку

Тепер повертаємося в контролер наш улюблений.

Ну думаю, що далі все зрозуміло. З течки Smarty нам треба заінклюдіть файл Smarty.class.php перед класом контролера, і зрозуміло розширити контролер від класу Smarty.

Тепер переробимо ваш контролер, припустимо він виглядає зараз так.

Нам потрібно створити ще папочку

в корені проекту, а в ній ще такі дивовижний татка

Потім ви зрозумієте навіщо.

Я зараз поясню що я тут зробив, в масиві $ patchs зберігаються шлях до папок, які ми створили в templates, в масиві ключі, це як ви зрозуміли змінні класу Smarty, які встановлюють шляхи до папок для роботи з шаблонізатором, а значення само собою сам шлях. Йдемо далі, в конструкторі ми біжимо в циклі з цього масиву, перевіряємо чи існує директорія, яка вказана в $ smarty_var_dir_value, якщо немає, то виходимо з циклу, а якщо є, присвоюємо значення змінної в класі Smarty :) Ми ж куллпрогери) По- цього так і зробили :)

Все, у нас все працює.

P.S У константі PROJECT_PATH у мене $ _SERVER [ 'DOCUMENT_ROOT']. DIRECTORY_SEPARATOR.

P.S.S Обов'язково, скопіюйте плагіни в папку templates / plugins /, плагіни можна взяти з архіву зі Smarty в таткові DEMO далі в plugins, ось там і є ці круті плагіни :)

Схожі статті