выборка и отображение данных с помощью CakePHP 2.x (разрешено)

EDIT: 2. Я решил проблему! Спасибо за поддержку. Чтобы увидеть окончательную версию, посмотрите на эту пастабин и посмотрите разницу между ней и моим кодом здесь, в StackOverflow.

http://pastebin.com/yWqs86Zt

РЕДАКТИРОВАТЬ. Теперь я могу распечатать данные на экране, но я вижу все данные планеты, когда мне нужна только строка за ctp. (земляной ряд на земле.ctp и т. д.).

Новое для торта и очень смущает. Я просмотрел документы, но я все еще в недоумении. Большой реквизит для всех, кто может помочь студенту.

В целом я работаю над приложением, которое показывает данные на каждой планете и луне в солнечной системе, передавая данные varbars из базы данных на anyplanet.ctp.

Я пытаюсь показать строку за ctp. Например, информация о Земле на планетах / earth.ctp, вызвав столбцы planet_name / info / content в функции Earth () PlanetsController.

У меня есть база данных с двумя таблицами

  • таблица планет
    • planet_id (int)
    • planet_name (varchar)
    • planet_info (varchar)
    • planet_content (varchar)

И лунный стол с теми же настройками, что и луны, а не планеты.

Модель Планеты выглядит так:

<?php App::uses('AppModel', 'Model'); class Planet extends AppModel { public $name = 'Planet'; public $useTable = 'planets'; } ?> 

Контроллер такой же (с пропущенными попытками)

 <?php class PlanetsController extends AppController { public $name = 'Planets'; public $helpers = array('Html', 'Form'); public function earth() { $this->set('planets', $this->Planet->find('all')); } } ?> 

earth.ctp выглядит так

  <?php echo $this->Html->image('earth1.jpg'); ?> <h2> Fact File </h2> <?php foreach ($planets as $planet): ?> <h3><?php echo $planet['Planet']['planet_name']; ?></h3> <p> <?php echo $planet['Planet']['planet_info']; ?></p> <?php endforeach; ?> <!--<p>orem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus elementum mattis turpis id aliquam. Duis vitae magna in justo varius dapibus. Donec mattis nunc tellus, at sollicitudin risus rutrum in. Curabitur vehicula et ipsum vel fringilla. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vestibulum venenatis eros gravida nibh eleifend egestas. Quisque vel libero convallis, vulputate sem nec, sollicitudin nisl. Nullam egestas orci eget velit hendrerit rhoncus.</p>--> </div><!-- /.col-xs-12 main --> 

 $earth = $this->Planet->find('first', array('conditions' => array('planet_name' => 'Earth'))); $this->set('earth', $earth); 

Или вы можете использовать find ('all'), если вы ожидаете большего количества строк.

Кстати, вы должны назвать столбец 'planet_id' 'id'; подробнее читайте на http://book.cakephp.org/2.0/ru/getting-started/cakephp-conventions.html#model-and-database-conventions

вы должны вернуться к документам cakephp, просмотреть HtmlHelper, а затем проверить это еще раз:

'Html' => array ('className' => 'BoostCakeHtml'), 'Form' => array ('className' => 'BoostCakeForm'), 'Paginator' => array ('className' => 'BoostCakePaginator') ,

В фрагменте кода, который вы закомментировали, есть две проблемы:

 //$earth = $this->Earth->find('all'); //$this->set('planets'); 

Во-первых, ваша модель называется Planet но с $this->Earth вы пытаетесь получить доступ к (несуществующей) модели под названием Earth .

Во второй строке вы определяете переменную для представления, но вы не присваиваете ей значение.

Исправляя эти два вопроса, вы получаете что-то вроде:

 $this->set('planets', $this->Planet->find('all'));