Русскоязычный форум, посвященный фреймворку Kohana

Все о фреймворке Kohana. Обсуждение уроков, документации.
Текущее время: 28 апр 2024, 01:18

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
СообщениеДобавлено: 04 июн 2013, 06:43 
Не в сети
Зеленый

Зарегистрирован: 03 июн 2013, 21:29
Сообщения: 6
Всем доброго времени суток. Скажем есть сложный запрос из БД который формирует список элементов, например список запчастей. Этот список в дальнейшем будет редко изменяться, а возможно вообще не будет этого происходить. По идее его получается лучше хранить в виде куска html-кода, который по нужде вставлять в шаблон. Но так как я недавно познакомился с kohana, могли бы подсказать как это принято делать в ней, или как лучше это сделать. :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 июн 2013, 10:02 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 11 апр 2013, 14:09
Сообщения: 162
В папке Models создай файл Htmltemplates.php примерно такого содержания:
Код:
<?php defined('SYSPATH') or die('No direct script access.');

class Model_Htmltemplates
{
     public function get_zip_select($class, $id, $style, $name) //при вызове этого метода класса Html можно будет передать стили, идентификаторы и пр. настройки отображения списка
     {
           $html = '<select class="'.$class.'" id="'.$id.'" name="'.$name.'" style="'.$tyle.'"><option value="1">Значение 1</option>Значение 2<option value="2"></option>';
           //и потом на свое усмотрение, либо
          return $html;
          //либо
          $this -> html = $html;
     }
     
     /*public function get_еще_че-то там...*/
}


Потом, в контроллере инициализируешь объект класса Htmltemplates:

Код:
<?php defined('SYSPATH') or die('No direct script access.');

class Controller_Mycontroller Controller_Template {
   
public function before()
{
   parent::before();
        $template = 'mytemplate';
}
   
public function action_index()
{
      $htmlSelect = new Model_Htmltemplates();
      //и потом в зависимости от того, какой метод вывода данных был выбран в методе класса, если return $html то
      $this->template->select_zip = $htmlSelect -> get_zip_select('select_class', 1, 'margin:0 auto', 'zip');
      //если $this->html=$html то
      $htmlSelect -> get_zip_select('select_class', 1, 'margin:0 auto', 'zip');
      $this->template->select_zip = $htmlSelect -> html
}


Ну и потом уже в файле вида выводишь переменную $select_zip куда тебе нужно. Как-то так. Мб, я ошибаюсь? Коли так, то сам жду ответов от гуру. Потому что для меня вопрос актуальный.

_________________
Они плакали и кололись, но продолжали есть кактус!


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 июн 2013, 11:51 
Не в сети
Зеленый

Зарегистрирован: 14 май 2013, 08:23
Сообщения: 9
Вообще принято пользоваться кешем.

Можно как сказано выше, но там дюже некрасиво.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 июн 2013, 14:08 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
используем apc акселератор по возможности
Код:
/**
 * Set cache settings
 * @link http://en.wikipedia.org/wiki/List_of_PHP_accelerators
 */
if (function_exists('apc_store') AND ini_get('apc.enabled'))
{
   Cache::$default = 'apc';
}
else
{
   Cache::$default = 'file';
}


я использую небольшую степень сжатия хранимых данных, это обеспечивает их компактность, при этом не сильно грузит систему при их распаковке.
Код:
// Поиск кеша по метке 'content'
if ($this->content = $this->cache->get('content'))
{
   // Распаковка загруженного кеша
   $this->content = gzuncompress($this->content);
}
else
{
   // Кеш не найден, выполняем код формирования данных
   $this->content = ...
}

// Сохранение кеша с сжатием данных
$this->cache->set('content', gzcompress($this->content, 2), Date::DAY/4);

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 июн 2013, 21:05 
Не в сети
Зеленый

Зарегистрирован: 03 июн 2013, 21:29
Сообщения: 6
тогда вопрос немного в другую тему, про кэш. Возможно уже такая есть. Когда им пользоваться в кохане - для каких случаев? :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 июн 2013, 21:48 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 02 апр 2013, 16:26
Сообщения: 474
Откуда: Сергиев Посад
почему именно в кохане не понятно, сама технология кеширования везде примерно одна, в своих проектах я обычно кеширую не страницы целиком, а отдельные блоки данных т.е. если речь о каталоге товаров, то для каждого товара предусмотрен свой кеш. это позволяет использовать данный кеш не только для каталога, но и для отображения результатов поиска по товарам. Вообще рекомендуют кешировать данные (массивы\объекты), т.ч. иногда делают даже многоуровневый кеш т.е. из кеша данных уже строятся html кеши блоков

_________________
Майкл Джордан играет в баскетбол. Чарльз Мэнсон убивает людей. Я пишу код. У каждого свой талант.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 июн 2013, 21:58 
Не в сети
Зеленый

Зарегистрирован: 03 июн 2013, 21:29
Сообщения: 6
Спасибо, буду разбираться. :)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 63


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Все о фреймворке Kohana  | 
Powered by phpBB® Forum Software © phpBB Group