Интеграция Codeigniter и Smarty

20 июля, 2011 г. Категория: Вебстроительство

codeigniter smarty Интеграция Codeigniter и Smarty
Сегодняшний пост родился благодаря тому, что я начал разбираться с PHP-фреймворком Codeigniter. Умеет он многое, жизнь облегчает довольно таки хорошо, но вот его шаблонизатор мне как-то не нравится. Поэтому я решил связать Codeigniter и очень известный шаблонизатор Smarty (который кстати используется в CMS Livestreet и многих других).

Для начала — решил погуглить. Нашел два варианта, на вид разных, но когда присмотрелся понял, что практически они представляют из себя одно и то же. Попробовал сделать — не получилось, в логи сыпались ошибки. Тут я понял, что эти варианты были для старых версий, а для моих Codeigniter 2.0.2 и Smarty 3.0.8 это не подходило. Тогда я начал искать другой путь, ведь использовать Smarty в Codeigniter'е для меня удобней и привычней.

Решение проблемы я нашел спустя минут 10, оказалось оно не сложным, разница между предыдущими вариантами была мала, но из-за нее все и не работало.

Собственно решение задачки:

1. Скачиваем и устанавливаем Codeigniter. Скачиваем Smarty, файлы из папки libs копируем в application/libraries/smarty/, предварительно создав папочку smarty.

2. Создаем в папке application/libraries/ файл mysmarty.php и добавляем в него строки:

<?php
require_once «smarty/Smarty.class.php»;

class Mysmarty extends Smarty {

function __construct() {
parent::__construct();
$this->template_dir = «templates/skin/»;
$this->compile_dir  = «templates/compile/»;
}
}
?>

В данном коде подразумевается, что Ваши шаблоны будут храниться в папке templates/skin/ а компилированные файлы в templates/compile/, поэтому если это Вам не подходит — нужно заменить на свой вариант.

3. Добавим подгрузку библиотеки Smarty в «автозагрузку». Для этого в файле application/config/autoload.php ищем объявление массива $autoload['libraries'] и добавляем туда значение mysmarty:

$autoload['libraries'= array('mysmarty');

4. Проверяем что получилось. Создаем в папке шаблонов файл, например index.tpl и добавляем в него:

{$test}

Создаем новый контроллер, для этого в папке application/controllers/ создаем файл, например main.php и помещаем в него код:

<?php
class Main extends CI_Controller
{
function index() {
$this->mysmarty->assign('test''Hello, world!');
$this->mysmarty->display('index.tpl');
}
}
?>

теперь открываем в браузере http://your-address.ltd/main/ и должны увидеть классику жанра — «Hello, world!».

Буду очень рад, если эта заметка кому-то поможет.
Profit!

Кстати, уже давно присмотрел себе новый телефон — HTC Wildfire. Но пока я думал и копил деньги появилась новая модель — Wildfire S. Теперь можно купить Htc Wildfire S с доставкой и не мучится. Осталось только отделить нужную сумму.

Метки: , , ,

Блог об интернете