Frameworks.suFrameworks.su Шпаргалка вебмастера

  • Главная
  • Framework Kohana
  • PHP
  • Javascript
  • CSS
  • Контакты
Главная / PHP / Framework Kohana / Подключения шаблонизатора Twig в Kohana 3.3

Подключения шаблонизатора Twig в Kohana 3.3

23.07.2014 5 6490

При написании проекта на Framework Kohana мне потребовалось подключить шаблонизатор Twig.

Для начала установим в Kohana модуль для работы с шаблонизатором - я использую этот модуль. Разворачиваем все это дело в кохану в директотрию modules. Twig разворачиваем в vendor - таким образом получется, что файлы шаблонизатора лежат по пути modules\twig\vendor\Twig\lib\Twig\.

В файле application/bootstrap.php для подключения модуля нужно добавить строчку:

Kohana::modules(array(
    'twig' => MODPATH.'twig'.
))

Всё, можно использовать в контроллерах так:

$this->response->body( Twig::factory('template_file') );

Здесь template_file — файл шаблона, например main.twig,  который ищется в application/views или views всех модулей. Где искать файлы шаблонов и расширение шаблонов указывается в настройках Twig (см. ниже).

Если же понадобится добавить свою функцию в Twig, то сделать это можно так:

В папке Extension создаем файл с нашим расширением, для примера добавим функцию  unserialize(). Обратите внимание на имя класса - оно повторяет путь.

class Twig_Extension_Unserializer extends Twig_Extension {
    
    //здесь мы и определяем нужную нам функцию
    public function getFunctions() {
        return array('unserializer' => new Twig_Function_Function('unserialize', array()));
    }

    //обязательно
    public function getName() {
        return 'unserializer';
    }   
}

Копируем файл modules\twig\config\twig.php в application\config\twig.php и настраиваем Twig:

return array
(
    'environment' => array
    (
        'debug'               => FALSE,
        'trim_blocks'         => FALSE,
        'charset'             => 'utf-8',
        'base_template_class' => 'Twig_Template',
        'cache'               => APPPATH.'cache/twig',
        'auto_reload'         => TRUE,
        'strict_variables'    => FALSE,
        'autoescape'          => FALSE,
        'optimizations'       => -1,
    ),
    //*************
    'extensions' => array
    (
    // Добавляем нашу функцию unserializer
    'Twig_Extension_Unserializer',
    ),
    //*************
    'templates'      => APPPATH.'views',
    'suffix'         => 'twig',
    'context_object' => TRUE,
);

Все готово, можно использовать. В шаблоне передается массив записей, поле записи content было сериализировано при записи в базу:

{% block main_content %}
    {% for item in posts %}
        {% set a = unserializer(item.content) %}
    {% endfor %}
{% endblock %}

Но этом все.

Теги:
  • Framework Kohana
  • Шаблонизатор Twig

Комментарии

  1. Stas
    Stas
    04.07.2018 10:54

    Мне больше нравится как работает с twig-файлами Codelobster - http://www.codelobster.com/twig.html

    Ответить

    A PHP Error was encountered

    Severity: Warning

    Message: count(): Parameter must be an array or an object that implements Countable

    Filename: Extension/Core.php

    Line Number: 1057

  2. Serhii
    Serhii
    30.03.2017 11:52

    Почему то не работает пишет при подключении в контроллере
    $this->response->body( Twig::factory('template_file') );
    пишет ошибку что не может найти класс Twig

    Ответить
    • Администратор
      Администратор
      30.03.2017 14:15

      Возможно вы забыли подключить его в bootstrap.php, либо вы его скопировали в другую папку.
      Проверьте может у вас константа MODPATH не на тот каталог указывает

      Ответить

        A PHP Error was encountered

        Severity: Warning

        Message: count(): Parameter must be an array or an object that implements Countable

        Filename: Extension/Core.php

        Line Number: 1057

  3. WinterSilence
    WinterSilence
    19.04.2016 13:42

    Зачем изобретать велосипед? https://github.com/WinterSilence/kohana-tpl

    Ответить

    A PHP Error was encountered

    Severity: Warning

    Message: count(): Parameter must be an array or an object that implements Countable

    Filename: Extension/Core.php

    Line Number: 1057

  4. Koh
    Koh
    25.02.2016 16:51

    Сделал так, выдало ошибку :

    ErrorException [ Fatal Error ]: Class 'Twig_Autoloader' not found
    MODPATH\kohana-twig\classes\Kohana\Twig.php [ 35 ]
    30 * @throws Kohana_Exception
    31 * @return bool
    32 */
    33 public static function init()
    34 {
    35 Twig_Autoloader::register();

    В чем может быть дело?

    Ответить

    A PHP Error was encountered

    Severity: Warning

    Message: count(): Parameter must be an array or an object that implements Countable

    Filename: Extension/Core.php

    Line Number: 1057

Оставить комментарий Отмена

*

*

*

*

Категории

  • PHP
    • Framework Kohana
  • Javascript
  • CSS
  • Администрирование

Теги

Framework Kohana Пример jQuery Уроки CRON Установка и настройка Backup CSS3 Валидация API Bash Cache Captcha i18n Linux

Авторизация

  • Забыли пароль?
  • Регистрация

Популярные статьи

  • Находим расстояние до ближайших станции метро

    Находим расстояние до ближайших станции метро

    17.02.2017 99134
  • Регистрация и авторизация пользователей. Модуль Auth в Kohana 3.3.x

    Регистрация и авторизация пользователей. Модуль Auth в Kohana 3.3.x

    02.07.2014 40040
  • Собственная система лайков на PHP и JQuery

    Собственная система лайков на PHP и JQuery

    06.04.2015 27763
  • Javascript — сумма прописью

    Javascript — сумма прописью

    07.07.2014 18127
  • Cross-domain ajax с помощью jQuery

    Cross-domain ajax с помощью jQuery

    24.04.2015 16918
Copyright © 2014-2022 Frameworks.su. Все права защищены.