Kohana Как подключить smarty к Kohana 3.3

mstdmstd

Новичок
Всем привет
Хочу подключить smarty к проекту Kohana 3.3 как описано здесь https://bitbucket.org/dfox/ksmarty/wiki/Home

Я скинул подкаталоги как и описано в инструции по установке
1) Достаточно ли что в /application/bootstrap.php прописано


PHP:
Kohana::modules(array(
   // 'auth'       => MODPATH.'auth',       // Basic authentication
   // 'cache'      => MODPATH.'cache',      // Caching with multiple backends
   // 'codebench'  => MODPATH.'codebench',  // Benchmarking tool
    'database'   => MODPATH.'database',   // Database access
   // 'image'      => MODPATH.'image',      // Image manipulation
   // 'minion'     => MODPATH.'minion',     // CLI Tasks
    'orm'        => MODPATH.'orm',        // Object Relationship Mapping
   // 'unittest'   => MODPATH.'unittest',   // Unit testing
    'userguide'  => MODPATH.'userguide',  // User guide and API documentation
    'smarty'  => MODPATH.'smarty',  // smarty template engine
   ));
Нужно ли тут указывать тут еще модуль ksmarty?

2) При запуске
PHP:
class Controller_Facility extends Controller_Common {
   public $template = 'admin/facility_list';

   public function action_index() 
   {

      $this->template->intro = 'Hello world!';
      $this->template->content = View::factory('content');  //Получаю ошибку "The requested view content could not be found"
Я надеялся что будет обращение к facility_list.tpl но явно ищет content.php - как будто он и не знает о smarty и ksmarty
А как правильно подключиться ? Или может есть что-то удобнее для подключения smarty к Kohana 3.3 ?
 

Adelf

Administrator
Команда форума
mstdmstd
там есть стек вызовов. можно посмотреть какой именно View вызывается. А так да, достаточно просто подключить модуль.

И да, последний раз модуль коммитился в 2009 году. Может быть несостыковка по версиям, ибо Кохана уже пару раз крупно обновилась(3.1, 3.2, 3.3), без совместимости в некоторых местах. И тут как раз, помоему, дело в этом. Он файл не может найти - в 3.3. они с большой буквы должны начинаться.
 

mstdmstd

Новичок
Удалось подключить смарти не используя никаких либ
Примерно так :
В /application/bootstrap.php
Добавил строку
PHP:
define("SMARTY_DIR", APPPATH . "classes/Smarty/libs/" );
Создал класс :
PHP:
<?php
 require_once(SMARTY_DIR . 'Smarty.class.php');

class AppSmarty extends Smarty {

  function __construct() {
    parent::__construct();
  }

  public function RunSmartyTemplate( $template_name, $data, $config_object, $is_backend, $show_header_template= false, $show_footer_template= false ) {
   $this->template_dir = APPPATH . 'views';
    $this->compile_dir = APPPATH . 'cache/templates_c';
    $this->cache_dir = APPPATH . 'cache';
    $this->config_dir = APPPATH . 'classes/Smarty/libs';

    foreach( $data as $DataKey=>$DataValue ) {
      $this->assign( $DataKey, $DataValue );
    }
    $this->registerPlugin("function","date_now", "print_current_date");
...

    ob_start();
    $this->display($template_name);
    $TemplateData= ob_get_contents();
    ob_clean();
    return $TemplateData;

  }
И вызов в контроле :
PHP:
   $AppSmarty= new AppSmarty();
   $TemplateData= $AppSmarty->RunSmartyTemplate('admin/facilitys_list.tpl', $data,/* $this->config*/ '', true, true, true);
   $this->template->content= $TemplateData;
Вроде работает. Может кому пригодиться...
Но поскольку я работаю с коханой только пару дней вопрос а какие вещи у меня сделаны не в стиле коханы и должны быть переделаны?
 

Adelf

Administrator
Команда форума
Нужно, чтобы работало как в примере у тебя в первом посте.
Переопределенный View хотя бы. А то у тебя одни шаблоны в php, другие в smarty.
Но если тебя устраивает - пофиг. Плюй на стандарты, когда они неудобны.
 

mstdmstd

Новичок
То есть мне надо переписать чтобы
PHP:
     $this->template->content = View::factory('content');
искало именно content.tpl файл а не .php и прогоняло именно smarty

Для этого нужно переопеделить класс View и положить его в application/classes ?
Ткните плиз в описание как переопределить класс View...
 

Adelf

Administrator
Команда форума
mstdmstd
создать модуль и создать класс View в папке classes. Он перекроет системный View для тех проектов, которые подключат данный модуль. Это одна из ключевых фич Коханы.
 
Сверху