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

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

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




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
СообщениеДобавлено: 26 май 2013, 02:41 
Не в сети
Новичок

Зарегистрирован: 19 фев 2013, 08:32
Сообщения: 23
Создаю модель
Код:
<?php defined('SYSPATH') or die('No direct script access.');
 
class Model_Video extends ORM {
   
   protected $_table_name = 'videos';

 
} //End Video

Контроллер
Код:
public function action_video()
    {
      
      $videos = ORM::factory('Video')->find_all();
      $this->template->videos = $videos;
      $this->template->content = View::factory('/pages/video');
      
    }

Пытаюсь вывести в вид
Код:
<?php foreach($videos as $video): ?>
            <li class="one_third first"><?php echo $video->code; ?></li>
            <?php endforeach; ?>

И ни фига ругается, говорит что переменная не определена что я делаю не так?


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

Зарегистрирован: 11 апр 2013, 14:09
Сообщения: 162
Цитата:
И ни фига ругается, говорит что переменная не определена что я делаю не так?

Какая переменная не определена? Можно снапшот ошибки в студию? Телепат в отпуске...

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 26 май 2013, 08:39 
Не в сети
Новичок

Зарегистрирован: 19 фев 2013, 08:32
Сообщения: 23
Скриншот во вложенном файле, ругается
Код:
ErrorException [ Notice ]: Undefined variable: videos

APPPATH\views\pages\video.php [ 67 ]

62     <div id="gallery" class="one_half">
63       <section>
64         <figure>
65           <h2>Gallery Title Goes Here</h2>
66           <ul class="clear">
67           <?php foreach($videos as $video): ?>
68             <li class="one_third first"><?php echo $video->code; ?></li>
69             <?php endforeach; ?>


Вложения:
scrin.JPG
scrin.JPG [ 159.42 КБ | Просмотров: 7200 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 26 май 2013, 12:46 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 июл 2012, 18:00
Сообщения: 701
Откуда: Murom, Russia
Код:
<?php

public function action_video
()
{
      $videos = ORM::factory('Video');

      $total = $videos->reset(FALSE)->count_all();
      if ($total == 0)
      {
            $this->response->body('No videos found');
            return;
      }

      $view = View::factory('/pages/video')
                  ->bind('videos',      $videos);

      $posts = $posts->order_by('поле_по_которому_сортируете', 'DESC') // DESC или ASC
                     ->limit(лимит)
                     ->offset(сдвиг_относительно_первого_элемента)
                     ->find_all();

      $this->template->content = $view;
}
 


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 26 май 2013, 19:22 
Не в сети
Новичок

Зарегистрирован: 19 фев 2013, 08:32
Сообщения: 23
Sergey писал(а):
Код:
<?php

public function action_video
()
{
      $videos = ORM::factory('Video'); //здесь понятно - обращение к модели создание экземпляра класса

      $total = $videos->reset(FALSE)->count_all();// эту часть вообще не вкурил, что за переменная нафига она?
      if ($total == 0)
      {
            $this->response->body('No videos found');
            return;
      }

      $view = View::factory('/pages/video') //это понятно создали переменную вида, забиндили то что вытащила из базы
                  ->bind('videos',      $videos);

      $posts = $posts->order_by('поле_по_которому_сортируете', 'DESC') // DESC или ASC// тупо не вкурил что объявляем и зачем
                     ->limit(лимит)
                     ->offset(сдвиг_относительно_первого_элемента)
                     ->find_all();

      $this->template->content = $view;//это я понял
} 

Благодарю за внимание, но объясните пожалуйста что к чему и почему. Проблема в том что не понимаю как это работает потому и не могу написать код рабочий, в уроке по орм вроде все понятно перехожу к практике не получается, с обычными sql запросами все работает а с орммом в стал в ступор. Еще раз спасибо за внимание.
И если не трудно подскажите у меня с моим кодом вылетает ошибка что переменная video не определена значит проблема с передачей ее в вид из контроллера или при определении ее из базы???


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 26 май 2013, 23:04 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 июл 2012, 18:00
Сообщения: 701
Откуда: Murom, Russia
А что собственно не понятно?
vchv писал(а):
// эту часть вообще не вкурил, что за переменная нафига она?

Код:
if ($total == 0) 

В $total помещаем общее кол-во найденного.

vchv писал(а):
// тупо не вкурил что объявляем и зачем

order_by() метод, который сортирует в вашем случае найденное. сортирует по полю, которое вы укажете.
например order_by('created', 'DESC') или order_by('date', 'DESC') или order_by('name', 'DESC').
второй аргумент DESC или ASC - то, как отсортировать найденное, по возрастанию или убыванию.
далее limit(лимит) означает, что вы можете получить из найденного точное кол-во элементов, например на странице нужно показать только 10 элементов. использовать так: limit(10) или так limit(18345).
если вы хотите показать пользователю вторую страницу с найденным, вам понадобится показать ему элменты не 1-10, например, а 11-20, верно? для получения элементов со сдвигом, например в 10 позиции используется метод offset(10)

так понятнее?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 27 май 2013, 12:47 
Не в сети
Новичок

Зарегистрирован: 19 фев 2013, 08:32
Сообщения: 23
Код:
<?php

public function action_video()
{
      $videos = ORM::factory('Video'); //здесь понятно - обращение к модели создание экземпляра класса

      $total = $videos->reset(FALSE)->count_all();// вкурил, работает и без этой проверки. А ее в принципе обязательно делать?
      if ($total == 0)
      {
            $this->response->body('No videos found');
            return;
      }

      $view = View::factory('/pages/video') //это понятно создали переменную вида, забиндили то что вытащила из базы
                  ->bind('videos',      $videos);

      $posts = $posts->order_by('поле_по_которому_сортируете', 'DESC') // DESC или ASC
/**не вкурил что объявляем и зачем потому что ввело в заблуждение название переменной, с $videos все работает.
 * А вообще это ключевой момент почему у меня сразу не пошло в  $view, $videos забиндил а переменную то не
* определил, балбес.*/
                     ->limit(лимит)
                     ->offset(сдвиг_относительно_первого_элемента)
                     ->find_all();

      $this->template->content = $view;//это я понял

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

I love orm!


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 27 май 2013, 13:30 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 июл 2012, 18:00
Сообщения: 701
Откуда: Murom, Russia
да, опечатался :)
не $posts = $posts->order_by
а
$videos = $videos->order_by


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

Зарегистрирован: 23 июл 2012, 21:58
Сообщения: 100
Причина была в том, что ТС не забиндил переменную:
Цитата:
->bind('videos', $videos);

..судя по скриншоту и контроллеру из первого поста..


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

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


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

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


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

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