Использование Smarty в CodeIgniter

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


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

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

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

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

application/libraries/

.

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

Smrt.php

— который будет все подключать.

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

Smrt

, это уже как удобно. Только не

Smarty

, он уже есть.

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

.

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

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

А содержимое файла

index.tpl

, который как мы помним должен лежать в папке, которую мы прописывали в

template_dir

(

frontend/theme/templates/skin/

), будет такое:

{$hello}

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

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

autoload

, в папке с конфигурационными файлами.

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


admin

Share
Published by
admin

Recent Posts

Что такое Zulip

Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…

2 месяца ago

Что такое Zookeeper

Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…

2 месяца ago

Что такое Zimbra

Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…

2 месяца ago

Что такое Zabbix

Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…

2 месяца ago

Что такое YouTube

YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…

2 месяца ago

Что такое yota

Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…

2 месяца ago