Как подключить Smarty к проекту на фреймворке Codeigniter 2, а также использование шаблонизатора в выводе и генерации HTML в контроллерах?

Фреймворк CodeIgniter — это прекрасный инструмент для разработки уникального функционала «с нуля». Это «почти чистый php». У него очень низкий порог вхождения, т.е. в том, как эта штука работает, можно разобраться очень быстро. Тем не менее, все мы привыкли работать с тем, что нам удобно и понятно.

Я бы не сказал, что стандартные средства вывода контента на CI плохи или неудобны. Так сложилось, что я много времени провожу, «ковыряя» сайты на CMS, которые используют шаблонизатор Smarty.

Можно много спорить о том, на чем лучше и как лучше разрабатывать интернет-приложения. Не буду вдаваться в подробности, я просто расскажу как использовать Smarty при разработке на CodeIgniter.

Smarty в архитектуре CI — это библиотека, соответственно и application/libraries/ .

В итоге в этой папке (если конечно у вас чистая установка фреймворка или вы не использовали других библиотек) будут находиться папка со Smarty и файл Smrt.php — который будет все подключать.

Конечно можно назвать файл и класс по-другому, не Smrt, это уже как удобно. Только не Smarty, он уже есть.

<?php
    require_once “smarty/Smarty.class.php”;

    class Smrt extends Smarty {

        function __construct() {
            parent::__construct();
            $this->template_dir = “frontend/theme/templates/skin/”;
            $this->compile_dir  = “frontend/theme/templates/compile/”;
        }
    }
?>

Папки должны быть обязательно созданы, а также иметь права на запись.

После этого в контроллерах фреймворка мы можем забыть о выводе шаблонов через view.

Теперь для вывода контента можно делать вот так:

<?php
    class Welcome extends Controller {
        function index() {
            $this->load->library('smrt'); //эту строку можно не писать, 
                                     //если библиотека есть в autoload
            $this->smrt->assign(‘hello’, ‘Hello, world!’);
            $this->smrt->display(‘index.tpl’);
        }
    }
?>

А содержимое файла index.tpl, который как мы помним должен лежать в папке, которую мы прописывали в template_dir («frontend/theme/templates/skin/»), будет такое:

{$hello}

И результатом будет всем известная строка, черным по белому!

И еще один момент. Так как выводить контент придется практически постоянно, то можно библиотеку прописать в autoload, в папке с конфигурационными файлами.

Надеюсь материал был полезен! Спасибо!


Комментариев нет

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

*

*