Русскоязычный форум, посвященный фреймворку Kohana
http://forum.kohanaframework.su/

Как подключить smarty к Kohana 3.3
http://forum.kohanaframework.su/viewtopic.php?f=31&t=710
Страница 1 из 1

Автор:  mstdmstd [ 30 июл 2013, 15:58 ]
Заголовок сообщения:  Как подключить smarty к Kohana 3.3

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

Я скинул подкаталоги как и описано в инструции по установке
1) Достаточно ли что в /application/bootstrap.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) При запуске
Код:
class Controller_Facility extends Controller_Common {
   public $template = 'admin/facility_list';

   public function action_index() // http://local-kohana.com/admin/dashboard
   {

      $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 ?

Автор:  WinterSilence [ 30 июл 2013, 17:21 ]
Заголовок сообщения:  Re: Как подключить smarty к Kohana 3.3

хз, как этот вариант работает. могу дать свой, он не очень хорошо сделан, но вполне работоспособен. сейчас дописываю универсальный Вид с возможность подключения разных шаблонизаторов, будет через недельку

https://github.com/WinterSilence/parts- ... /SView.php
https://github.com/WinterSilence/parts- ... smarty.php

Автор:  mstdmstd [ 31 июл 2013, 09:04 ]
Заголовок сообщения:  Re: Как подключить smarty к Kohana 3.3

WinterSilence писал(а):
хз, как этот вариант работает. могу дать свой, он не очень хорошо сделан, но вполне работоспособен. сейчас дописываю универсальный Вид с возможность подключения разных шаблонизаторов, будет через недельку

Пожалуйста, Интересно посмотреть.
WinterSilence писал(а):

Это Ваши разработки? Честно говоря не очень понял как с ними работать...

Автор:  WinterSilence [ 31 июл 2013, 11:26 ]
Заголовок сообщения:  Re: Как подключить smarty к Kohana 3.3

также как с обычным View, например $template = SView::factory('path/template', $data)->render()

Автор:  mstdmstd [ 31 июл 2013, 13:18 ]
Заголовок сообщения:  Re: Как подключить smarty к Kohana 3.3

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

Создал класс :


Код:
<?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;

  }


И вызов в контроле :
Код:
   $AppSmarty= new AppSmarty();
   $TemplateData= $AppSmarty->RunSmartyTemplate('admin/facilitys_list.tpl', $data,/* $this->config*/ '', true, true, true);
   $this->template->content= $TemplateData;

Вроде работает. Может кому пригодиться...
Но поскольку я работаю с коханой только пару дней вопрос а какие вещи у меня сделаны не в стиле коханы и должны быть переделаны?

Автор:  WinterSilence [ 31 июл 2013, 15:58 ]
Заголовок сообщения:  Re: Как подключить smarty к Kohana 3.3

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

Код:
    ob_start();
    $this->display($template_name);
    $TemplateData= ob_get_contents();
    ob_clean();
    return $TemplateData;

=
Код:
    return $this->fetch($template_name);

Страница 1 из 1 Часовой пояс: UTC + 4 часа [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/