Проверьте свои контроллеры.
Если вы хотите отобразить информацию комментариев в представлении сообщений, вы должны быть уверены, что контроллер сообщений может загрузить данные.
Способ "CakePHP"это определить отношения между моделями.Проверьте свои запеченные модели и посмотрите, есть ли что-то вроде этого:
class Post extends AppModel{
var $hasMany = array( 'Comment' );
}
Когда модели связаны друг с другом, ваш контроллер сообщений автоматически найдет объекты Post и связанные с ними объекты Comment.
Например, эта строка:
$this->Post->findById( $id );
будет производить что-то вроде этого:
Array
(
[Post] => Array
(
[id] => 42
[text] => Post1
)
[Comment] => Array
(
[0] => Array
(
[id] => 1
[post_id] => 42
[text] => Comment1
)
[1] => Array
(
[id] => 2
[post_id] => 42
[text] => Comment2
)
)
)
Хорошая документация на http://book.cakephp.org/
РЕДАКТИРОВАТЬ: Добавление дополнительной информации после вашего комментария
Покамодели имеют связь, CakePHP будет извлекать данные соответствующим образом (если вы не установите Recursive => false
или не используете Containable
, который, как я полагаю, вы не используете).
Проверьте свой контроллер PostsController и посмотрите, как он загружает данные.Я предполагаю, что он делает что-то вроде следующего:
$post = $this->Post->findById( $id );
$this->set( compact( 'post' ) );
или
$this->data = $this->Post->findById( $id );
Проверьте, каким образом он хранит извлеченные данные, а затем получите доступ к этой переменной из представления.
Например, если он хранит данные в переменной с именем "$ post", вы должны поместить что-то вроде этого в ваше представление:
// output the 'text' field of the 'post' object
echo $post[ 'post' ][ 'text' ];
// loop through associated comments
foreach ( $post[ 'comment' ] as $comment ){
//output the 'text' field of a 'comment' object
echo $comment[ 'text' ];
}
По умолчанию CakePHP хранит тонны деталейв массивах после извлечения данных.Хитрость заключается в том, чтобы знать иерархию данных и извлекать их из массива соответственно.