Как создать навигацию в CakePHP, используя только модели? - PullRequest
0 голосов
/ 22 октября 2011

Название говорит все.У меня будет навигация, которая выглядит следующим образом, и она динамически создается из базы данных.

<ul>
    <li><a href='controller/view/1'>1</li>
    <li><a href='controller/view/2'>2</li>
    <li><a href='controller/view/3'>3</li>
</ul>

Она должна быть одинаковой на каждой странице (по страницам, я имею в виду на каждом контроллере), за исключением активного.Это мой первый раз в cakephp.

Это мой файл элементов:

<ul id="left-navigation">
<?php
App::import('Model','Godina');
$navigacija = $this->Godina->find('all');
foreach($navigacija as $nav){
echo '<li>' . $this->html->link($nav['Godina']      ['godina'],array('controller'=>'godina','action'=>'program',$nav['Godina']['godina'])
) . '</li>';
}

?>

И это ошибка, которую я получаю.

Fatal error: Call to a member function find() on a non-object in     /Applications/MAMP/htdocs/cakephp/app/View/Elements/godineNavigacija.ctp on line 4

И поскольку мои знания о ядре CakePHP довольно низки, он просто не работает.Спасибо.

1 Ответ

2 голосов
/ 22 октября 2011

App::import просто загружает файл, как PHP include, он не создает объект. Так что $this->Godina не существует. Вы можете сделать это:

$Godina = ClassRegistry::init('Godina');
$Godina->find(...);

Для правильного разделения MVC не следует использовать модели в представлении. Вы можете получить и set данные в AppController::beforeFilter, поэтому он делает это на каждой странице, а затем выводит их в виде. В качестве альтернативы посмотрите в requestAction.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...