Что-то совсем замотался я, простите друзья.

Начал потихоньку изучать php фрейморк Kohana. Решил не останавливаться на старых версиях, а наблюдать за развитием Kohana 3.

Приоритетной задачей стал выбор шаблонизатора. Использовать стандартный подход не хотелось — не нравится мне мешать php и html. Опыта работы с шаблонизаторами у меня не много, но использование Smarty меня полностью устраивает. Решение проблемы подключения Smarty к Kohana найдено здесь

Далее небольшой произвольный перевод мануала.

1. Необходимо скачать модуль. Последние изменения смотрите на страничке проекта. Распакуйте архив прямо в главную папку, таким образом папка с модулем окажется где нужно :) , а точнее в modules/.

2. Переместить файл конфигурации Smarty в папку настроек вашего приложения application/config/ *не обязательно

Теперь вы можете настроить шаблонизатор исходя из ваших потребностей :)

<?php defined('SYSPATH') OR die('No direct access allowed.');
 
return array
(
        'version' => '3', //either version 2.6 or 3
        'cache' => false,
        'debug' => false,
        'security' => false,
        'force_compile' => false,
        'error_reporting' => null,
        'php_handling' => 0, //a number between 0 and 3, chechk smarty for SMARTY_PHP_* constants
 
        'template_dir' => APPPATH.'view'.DIRECTORY_SEPARATOR,
        'compile_dir' => MODPATH.'smarty'.DIRECTORY_SEPARATOR.'compile'.DIRECTORY_SEPARATOR,
        'plugin_dir' => array(), //you can put in multiple paths for smarty to load plugins from
        'cache_dir' => APPPATH.'cache'.DIRECTORY_SEPARATOR,
        'config_dir' => MODPATH.'smarty'.DIRECTORY_SEPARATOR.'template_config'.DIRECTORY_SEPARATOR,
        'include_before' => array(),
        'include_after' => array(),
);

3. Откройте файл bootstrap.php и добавьте Smarty к списку модулей.

<?php
/**
 * Enable modules. Modules are referenced by a relative or absolute path.
 */
Kohana::modules(array(
        // 'auth'       => MODPATH.'auth',       // Basic authentication
        // 'codebench'  => MODPATH.'codebench',  // Benchmarking tool
         //'database'   => MODPATH.'database',   // Database access
        // 'image'      => MODPATH.'image',      // Image manipulation
         //'orm'        => MODPATH.'orm',        // Object Relationship Mapping
        // 'pagination' => MODPATH.'pagination', // Paging of results
         //'userguide'  => MODPATH.'userguide',  // User guide and API documentation
         'smarty'  => MODPATH.'smarty',  // smarty template engine
        ));
?>

4. Smarty готов к использованию, нужно проставить лишь права доступа на папку для компиляции шаблонов.

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

Простейший пример:

<?php defined('SYSPATH') or die('No direct script access.');
 
class Controller_Welcome extends Controller_Smarty {}
 
?>

Возможно использование двух различных способов работы со Smarty.

1. Auto render
Стандартный подход, как с Kohana::View.

<?php defined('SYSPATH') or die('No direct script access.');
 
class Controller_Welcome extends Controller_Smarty
{
        /**
        * @var  string  page template
        */
        public $template = "welcome.tpl";
 
}
?></php>

Использование переменных в контроллере.

<?php defined('SYSPATH') or die('No direct script access.');
 
class Controller_Welcome extends Controller_Smarty
{
        /**
        * @var  string  page template
        */
        public $template = "welcome.tpl";
 
        public function action_index()
        {
                $this->view->assign('intro', 'Hello world!');
        }
}
?>

2. Loose
Данный способ позволяет использовать разные шаблоны для каждого действия вашего контроллера.

Пример:

<?php defined('SYSPATH') or die('No direct script access.');
 
class Controller_Welcome extends Controller_Smarty
{
 
        public $auto_render = FALSE;
 
        public function action_index()
        {
                $this->view->assign('intro', 'Hello world!');
                $this->request->response = $this->view->fetch('welcome.tpl');
        }
}
?>

Немного поэкспериментировав с использованием Smarty я довольно быстро во всем разобрался, без каких либо достаточных знаний Kohana. :)

Документация о модуле Smarty Kohana 3

Буду и дальше продолжать изучение этого замечательного фреймворка :)

Другие записи

Метки: , , ,