Вітаю, дорогі друзі!
Сьогодні я вам поведу про те, а як же все таки підключити шаблонизатор 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, ось там і є ці круті плагіни :)