ここは私のメッセージエンティティです。私のアプリでユーザー間のメッセージを定義するクラスです。twigにネストされた配列を表示
class Message
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var string
* @Assert\NotBlank(message="private_message.title.blank")
* @ORM\Column(name="title", type="string", length=50)
*/
protected $title;
/**
* @Assert\NotBlank(message="private_message.receiver.blank")
* @ORM\ManyToOne(targetEntity="MedAppBundle\Entity\User")
* @ORM\JoinColumn(referencedColumnName="id")
*/
protected $receiver;
/**
* @ORM\ManyToOne(targetEntity="MedAppBundle\Entity\User")
* @ORM\JoinColumn(referencedColumnName="id")
*/
protected $sender;
/**
* @var string
* @Assert\NotBlank(message="private_message.content.blank")
* @ORM\Column(name="content", type="string")
*/
protected $content;
/**
* @var \DateTime
*
* @ORM\Column(name="sentAt", type="datetime")
*/
protected $sentAt;
/**
* @var boolean
*
* @ORM\Column(name="isSpam", type="boolean")
*/
protected $isSpam = false;
/**
* @var \DateTime
*
* @ORM\Column(name="seenAt", type="datetime",nullable=true)
*/
protected $seenAt = null;
/**
* @ORM\ManyToOne(targetEntity="PrivateMessageBundle\Entity\Message")
* @ORM\JoinColumn(referencedColumnName="id",nullable=true)
*/
protected $replyof;
/**
* @ORM\OneToMany(targetEntity="PrivateMessageBundle\Entity\Message", mappedBy="replyof")
**/
private $replies;
public function __construct() {
$this->replies = new ArrayCollection();
}
何に注意することが重要なのは、メッセージの親が何であるかを伝えますメッセージreplyof
変数、です。 NULLの場合、メッセージは返信ではなく、親メッセージ(ルート)です。
そして、messages
変数は、メッセージへの返信であるメッセージの配列です。これらの返信には返信がある可能性があります。この配列は、リーフノードには何も返されないため、NULLでもかまいません。
他のすべての変数には、2人のユーザー間の実際のメッセージを定義するフィールドが含まれています。
私は何をしようとしていることは小枝私のすべてのメッセージの表示のようなので、樹枝状の形式になります。
message1 - root message, reply of none, but has replies
reply1 - first reply of message 1
reply1 first reply of reply 1 of message 1, leaf with no further replies
reply2 - second reply of message 1, leaf with no further replies
message2 - root message, no replies and a reply of none
問題は小枝だけforeach
ループをサポートし、私はどのようにわからないということです2より大きい深度のときにこの形式を表示します。
{% for reply in message.replies %}
<li> sent by: {{ reply.sender }} </li>
<li> title: {{ reply.title }} </li>
<li> content: {{ reply.content }} </li>
<li> date: {{ reply.sentAt|date('d-m-Y H:i:s') }} </li>
<hr>
{% endfor %}
これはメッセージのすべての返信を表示しますが、ネストされたメッセージを完全に表示するにはどうすればよいですか?
[Twig - ツリーのレンダリング方法](http://stackoverflow.com/questions/8326482/twig-how-to-render-a-tree)を見たことがありますか? – HPierce