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

Получение и вывод записей ORM и WIDGET
http://forum.kohanaframework.su/viewtopic.php?f=36&t=410
Страница 1 из 2

Автор:  limurec [ 12 окт 2012, 11:07 ]
Заголовок сообщения:  Получение и вывод записей ORM и WIDGET

Всем привет!!! Подскажите, кто знает как вывести данные из базы в виджете и передать их в основной контроллер и оттуда в вид? Я делаю так:
Код виджета
Код:
class Controller_Widgets_Primer extends Controller_Template {
       
        public $template = 'widgets/w_view_primer';

        public function action_index()
        {           
            //Вывод в шаблон
            $primersql = ORM::factory('carousel')
                            ->limit(10)
                            ->order_by('view', 'DESC')
                            ->find_all();
            //Вывод в шаблон
            $primer = View::factory('widgets/w_view_primer', array(
                            'primer' => $primersql,
                            ));
            $this->template->block_footer = array($primer);
        }

}

Код вида
Код:
    <div class="carousel">
        <ul id="mycarousel" class="jcarousel-skin-tango">
    <?foreach($primer as $primerview):?>
            <li>
                <div class="home-box dark">
                    <h4><?=$primerview->title?></h4>
                    <a href="<?=$primerview->screenshot?>" class="fancycaption photo-overlay fancybox-photo">
<img class="fade" src="<?=$primerview->mini_img?>" width="150" height="100" alt="<?=$primerview->category?> шаблон <?=$primerview->title?>" />
              </a>
                    <div class="carousel-info">
                        <a class="carousel-link" href="<?=$primerview->download_link?>">Скачать</a>
                        <a class="carousel-link" href="/material/<?=$primerview->category?>/<?=$primerview->post?>">Подробнее</a>
                    </div>
                </div>
            </li>
    <?endforeach?>
        </ul>
   </div>

В контроллере подключаю и передаю так
Код:
class Controller_Base extends Controller_Template {

        public $template = 'view_base';
        protected $widgets_folder = 'widgets';      // Папка для контроллеров виджетов

        public function before()
        {
            parent::before();
            $settings = Kohana::$config->load('settings');
           
            $search = Widget::load('search');
            $site = Widget::load('site');
            $recomend = Widget::load('recomend');
            $help = Widget::load('help');
            $primer = Widget::load('primer');
           
            //Вывод в шаблон
           
            $this->template->block_footer = array($primer);
            $this->template->site_name = $settings->site_name;
            $this->template->site_description = $settings->site_description;
            $this->template->block_right = array($search, $site, $help, $recomend);
           
            //Подключение стилей и скриптов
            $this->template->styles = array(
                            'media/css/style.css',
                            'media/css/960.css',
                            'media/fancybox/jquery.fancybox-1.3.4.css',
                            'media/css/rating.css'
                            );
            $this->template->scripts = array(
                            'media/js/jquery.js',
                            'media/js/custom.js',
                            'media/js/jquery.packed.js',
                            'media/js/jcarousel.min.js',
                            'media/js/rating.js',
                            );
           
            //Подключаем блоки
            $this->template->header = null;
            $this->template->block_left = null;
            $this->template->block_footer = null;
            $this->template->page_title = null;
           
        }

С контроллера передает в такой вид
Код:
<!-- ФУТЕР -->
        <?if(isset($block_footer)):?>
            <?foreach($block_footer as $footer_div):?>
                <?=$footer_div?>
            <?endforeach?>
        <?endif?>
        <!-- ///ФУТЕР -->

Выдает такую ошибку
Изображение
Причем все виджеты которые без получения данных из базы нормально отображаются((

Автор:  Sergey [ 13 окт 2012, 04:29 ]
Заголовок сообщения:  Re: Получение и вывод записей ORM и WIDGET

Код:
$primer = View::factory('widgets/w_view_primer')->bind('primer' => $primersql));


И прекратите пользоваться <?, <?= и прочим, вместо <?php. Пока не поздно

Автор:  limurec [ 13 окт 2012, 07:37 ]
Заголовок сообщения:  Re: Получение и вывод записей ORM и WIDGET

Не помогает это все...((( если код из виджета поставить напрямую в главный контроллер то все нормально...

Автор:  limurec [ 13 окт 2012, 12:12 ]
Заголовок сообщения:  Re: Получение и вывод записей ORM и WIDGET

Проблема решена

Автор:  Sergey [ 13 окт 2012, 12:12 ]
Заголовок сообщения:  Re: Получение и вывод записей ORM и WIDGET

Как это не помогает?
После передачи $primersql в представлении делали var_dump($primer)?
Какой вывод был?

Автор:  Sergey [ 13 окт 2012, 12:12 ]
Заголовок сообщения:  Re: Получение и вывод записей ORM и WIDGET

limurec писал(а):
Проблема решена

Как?

Автор:  limurec [ 13 окт 2012, 13:02 ]
Заголовок сообщения:  Re: Получение и вывод записей ORM и WIDGET

В самом виджете вот это было лишним...

$primer = View::factory('widgets/w_view_primer', array(
'primer' => $primersql,
));
И вывод просто сделал вот так
$this->template->primer = $primer;

Автор:  Zorato [ 13 окт 2012, 13:24 ]
Заголовок сообщения:  Re: Получение и вывод записей ORM и WIDGET

Sergey писал(а):
И прекратите пользоваться <?, <?= и прочим, вместо <?php. Пока не поздно

Обоснуйте

Автор:  AmberLEX [ 14 окт 2012, 01:15 ]
Заголовок сообщения:  Re: Получение и вывод записей ORM и WIDGET

http://php.net/manual/ru/language.basic ... hpmode.php

Автор:  Zorato [ 14 окт 2012, 02:16 ]
Заголовок сообщения:  Re: Получение и вывод записей ORM и WIDGET

AmberLEX писал(а):
http://php.net/manual/ru/language.basic-syntax.phpmode.php


Цитата:
Замечание:

Начиная с PHP 5.4 короткий тег echo <?= всегда распознается и действует, несмотря на значение опции short_open_tag.


Ну а если на сервере ВДРУГ отключен short_open_tag и его нельзя включить через ini_set, то в IDE всегда можно заменить <?= на <?php echo во всем проекте.

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