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

Invalid argument supplied for foreach()
http://forum.kohanaframework.su/viewtopic.php?f=31&t=194
Страница 1 из 2

Автор:  websto [ 22 май 2012, 19:04 ]
Заголовок сообщения:  Invalid argument supplied for foreach()

Как правильно написать контролер что-бы вытащить например статьи с базы по категориям у меня так

public function action_cat()
{
$cat = array();
$id = $this->request->param('id');
$content = View::factory('/pages/cat')
->bind('cat', $cat);
$cat = Model::factory('categ')->get_cat($id);
$this->template->content = $content;
}

Это модель

public function get_cat($id = '')
{
$sql = "SELECT id,title,img FROM ". $this->_tableArticles ." WHERE 'cat' = :id ORDER BY id DESC LIMIT 7";

$query = DB::query(Database::SELECT, $sql)
->param(':id', (int)$id)
->execute();
}

foreach($cat as $art): Видает ошибку

Автор:  ivank_x [ 22 май 2012, 21:12 ]
Заголовок сообщения:  Re: Invalid argument supplied for foreach()

в конце модели забыли
Код:
return $query

Автор:  websto [ 22 май 2012, 22:04 ]
Заголовок сообщения:  Re: Invalid argument supplied for foreach()

Ошибки уже нет но выводит почему-то пустую страницу

var_dump выводит array(0) { }

Автор:  ivank_x [ 22 май 2012, 22:21 ]
Заголовок сообщения:  Re: Invalid argument supplied for foreach()

перепишите контроллер
Код:
$content = View::factory('/pages/cat');
$content->cat = Model::factory('categ')->get_cat($id);
$this->template->content = $content;

Автор:  websto [ 22 май 2012, 22:32 ]
Заголовок сообщения:  Re: Invalid argument supplied for foreach()

не помогло также 0 в массиве

пробовал в модели

$result = $query->as_array();

return $result;

тоже не проходит

Автор:  websto [ 22 май 2012, 23:14 ]
Заголовок сообщения:  Re: Invalid argument supplied for foreach()

Может это я не все прописал! Так у меня было в процедурном стиле

SELECT * FROM data WHERE cat = $_GET['cat']

а как здесь пишется подобный запрос

Автор:  ivank_x [ 23 май 2012, 09:57 ]
Заголовок сообщения:  Re: Invalid argument supplied for foreach()

а в переменной $id что-нибудь есть?
переменной _tableArticles не вижу у вас в модели

Автор:  websto [ 23 май 2012, 10:13 ]
Заголовок сообщения:  Re: Invalid argument supplied for foreach()

protected $_tableArticles = 'data'; просто не прописал тогда

$content->cat = Model::factory('categ')->get_cat($id);

когда убрать $id то вывод есть только не по категориям

Автор:  ivank_x [ 23 май 2012, 10:19 ]
Заголовок сообщения:  Re: Invalid argument supplied for foreach()

значит переменная $id у вас пустая, проверьте через echo
Код:
echo $id = $this->request->param('id');

Автор:  websto [ 23 май 2012, 11:01 ]
Заголовок сообщения:  Re: Invalid argument supplied for foreach()

Проверил выводит цифру номер категории.Вот роут и меню может здесь что-то

Route::set('cat', '<cat>/<id>', array('id' => '[0-9]+'))
->defaults(array(
'controller' => 'categ',
'action' => 'cat',
));

меню выводит нормально
<?php foreach ($menu as $menus): ?>
<li class="last"><a href="<?php echo URL::site('/cat'); ?>/<?=$menus['id']?>"><?=$menus['title']?></a></li>
<?php endforeach;?>

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