Опросы
Прикручиваем smarty к CodeIgniter
Рубрика: Мир глазами программистаРаздел: codeigniter
дата:05-06-2009
Практически год, как я юзаю CodeIgniter, и все это время, просто не имею возможности на него нарадоваться. Успешный, вполне успешный фрэймворк. Но вот шаблонизатор у него естественно подкачал! Обычный шаблонизатор CI не годиться ни на что, понятия не имею, нафига он вообщем встроен… Smarty, в личную очередь, вполне мощнейший и функциональный шаблонизатор, каковой, не лишним будет заметить заявить, я начал применять еще до знакомства с CI. Наконец, поняв, что моя жизнь без CI, как и без smarty, будет унылой, неинтересной и скучноватой, я, само собой, принял решение соединить эти 2 чуда природы. Рассказываю как я это создал.
Делаем модель для отображения шаблонов.
Наконец, в первую очередь скопируем smarty в CI. Здесь естественно кому как больше нравиться, я традиционно копирую директорию Smarty в директорию /system. В результате путь до Smarty.class.php получаеться таковой: /system/Smarty/libs/ Smarty.class.php.
Сейчас сделаем модель, каковая станет отвечать за связь CI и Smarty. Я именовал данную модель “design”. Чтобы достичь желаемого результата в папке /system/application/models делаем файл Design.php со последующим кодом
< ?php
class Design extends Model
{
var $smarty;
function Design()
{
parent::Model();
define('SMARTY_DIR', $_SERVER['DOCUMENT_ROOT'].'/system/Smarty/libs/');
require_once(SMARTY_DIR . 'Smarty.class.php');
$this->smarty = new Smarty();
$this->smarty->template_dir = $_SERVER['DOCUMENT_ROOT'].’/themes/’;
$this->smarty->compile_dir = $_SERVER['DOCUMENT_ROOT'].’/themes/templates_c/’;
$this->smarty->config_dir = $_SERVER['DOCUMENT_ROOT'].’/themes/configs/’;
$this->smarty->cache_dir = $_SERVER['DOCUMENT_ROOT'].’/themes/cache/’;
$this->smarty->left_delimiter = “{%”;
$this->smarty->right_delimiter = “%}”;
//$this->smarty->debugging = true;
}
function show($template)
{
$this->smarty->display($template.’.tpl’);
}
}
Поясню по подробнее.
Мы делаем свойство класса под названием $smarty
var $smarty;
Дальше способ Design() – это конструктор модели, каковой описывает константу ‘SMARTY_DIR’, в ней находиться путь до smarty, подключает файл класса smarty, и присваивает сделанному нами свойству ’smarty’ объект класса smarty.
define(’SMARTY_DIR’, $_SERVER['DOCUMENT_ROOT'].’/system/Smarty/libs/’);
require_once(SMARTY_DIR . ‘Smarty.class.php’);
$this->smarty = new Smarty();
Последующие строки
$this->smarty->template_dir = $_SERVER['DOCUMENT_ROOT'].’/themes/’;
$this->smarty->compile_dir = $_SERVER['DOCUMENT_ROOT'].’/themes/templates_c/’;
$this->smarty->config_dir = $_SERVER['DOCUMENT_ROOT'].’/themes/configs/’;
$this->smarty->cache_dir = $_SERVER['DOCUMENT_ROOT'].’/themes/cache/’;
Устанавливают пути до:
- директории с шаблонами,
- директории для компиляции шаблонов,
- директории для конфигурационных файлов шаблонов,
- директории кэша.
Строчками
$this->smarty->left_delimiter = “{%”;
$this->smarty->right_delimiter = “%}”;
Мы заявляем smarty, что не желаем применять разделители установленные по умолчанию (“{“, ”}”), и меняем их на свои (“{%”,“%}”), так как ежели неожиданно в шаблон закрадется строка css, к примеру:
Body {
padding:0px
}
Либо js
function some()
{
// Код ф-ции
}
То код содержащийся меж фигурных скобок, smarty воспримет за собственный, и выдаст погрешность… Нафиг нам таковое блаженство?
Ну и крайняя строка конструктора
//$this->smarty->debugging = true;
Это вывод консоли отладки, вещь достаточно нужная, показывающая все переменные, переданные шаблонизатору (для вывода консоли строку надлежит раскомментировать).
Ну а дальше идет способ show($template), отвечающий конкретно за вывод шаблона. Способ воспринимает заглавие шаблона (без расширения), присобачивает к нему расширение и выводит на дисплей.
Внедрение.
До этого чем применять, нельзя не добавить лишь что сделанную модель в автозагрузку. Чтобы достичь желаемого результата добавьте модель “design” в массив $autoload['model'], каковой определен в файле /system/application/config/autoload.php
Сейчас передавать в шаблонизатор переменные возможно так:
$this->design->smarty->assign(”name”,$value);
А выводить шаблоны:
$this->design->show(”template”);
Спонсоры заметки
Анонсы жилищного рынка, заметки, и перепродажа квартир в Столице на веб-сайте domania.ru
Подумали о покупке авто? Приобрести новенькую нет финансов? Обратите внимание на бувшие в употреблении авто. Хватит быть пешеходом!
У вас отменная работа? Вы получаете довольно? Вы увлекаетесь тем, что вам нравиться? Вас организуют условия? Ежели вы дали ответ нет но бы на 1 вопросец, то вам необходима свежая работа. Запомните, работа обязана приносить не столько материальное, но и моральное ублажение.
Прибавить в закладки:
okbm("http://boliev.com/archives/581","Прикручиваем smarty к CodeIgniter")
| <<< Предыдущая статья | Следующая статья >>> |
