В моем приложении у пользователя есть профиль, и он может оставлять комментарии и сообщения.
При просмотре списка комментариев к сообщению я хочу показать имя человека, который оставил комментарий. Я пробовал следующее:
<?php if ( ! empty($post['Comment']) ): ?>
<ul>
<?php foreach ($post['Comment'] as $comment): ?>
<li id="comment-<?php echo $comment['id']; ?>">
<h3><?php echo $this->Html->link($comment['User']['Profile']['firstname'] . ' ' . $comment['User']['Profile']['lastname'], array('controller'=>'profiles','action'=>'view','userName'=>$comment['User']['username'])); ?></h3>
<?php echo $comment['content']; ?>
<?php echo $comment['datetime']; ?>
</li>
<?php endforeach; ?>
</ul>
<?php else: ?>
<p>No comments...</p>
<?php endif; ?>
Но я получаю следующую ошибку: Undefined index: User [APP/View/Posts/view.ctp, line 37]
Есть идеи, как решить проблему?
У меня есть следующее для метода контроллера:
function view ( $id = null, $slug = null )
{
$post = $this->Post->find('first',array('contain'=>array('Comment','User'=>array('Comment','Profile')),'conditions'=>array('Post.id'=>Tiny::reverseTiny($id))));
if (!$post)
{
throw new NotFoundException('404');
}
else if($post['Post']['status'] == '0') // 0=draft 1=open 2=open
{
if($post['Post']['user_id'] == $this->Auth->user('id'))
{
$this->Session->setFlash('Your post has NOT been published yet');
}
else
{
throw new NotFoundException('404');
}
}
if (Inflector::slug($post['Post']['title']) != $slug || $slug = null)
{
$this->redirect(array('id'=>Tiny::toTiny($post['Post']['id']),'slug'=>Inflector::slug($post['Post']['title'])));
}
$this->set(compact('post'));
}
Все ассоциации моделей должны быть правильными, так как я хорошо вижу комментарии и информацию о профиле для самого сообщения, просто комментарии, которые не отображают информацию профиля.
Спасибо всем, кто может помочь.