記事の管理を含め、ブログ用の作業用バンドルを正常に作成しましたが、コメントが残っています。ユーザーと匿名ユーザーでコメントを分けたい。ユーザーがログインしている場合、作成者のフィールドは表示されず、キャプチャも表示されません。この問題は、フォームビルダー (ユーザーが完全に認証されている場合) と TWIG テンプレートで解決できると思います。しかし、それは良い解決策ですか?もっと簡単な方法はありませんか?だから私Comment.phpはこのフォームを持っています:
<?php
namespace Acme\BlogBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity
* @ORM\Table(name="comments")
*/
class Comment
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="string", length=200)
* @Assert\NotBlank(
* message = "Name cannot be blank"
* )
* @Assert\Length(
* min = "3",
* minMessage = "Name is too short"
* )
*/
private $author;
/**
* @ORM\ManyToOne(targetEntity="\Acme\UserBundle\Entity\User")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
private $user_id;
/**
* @ORM\Column(type="string", length=200)
* @Assert\NotBlank(
* message = "E-mail cannot be blank"
* )
* @Assert\Length(
* min = "3",
* minMessage = "E-mail is too short"
* )
*/
private $email;
/**
* @ORM\Column(type="text")
* @Assert\NotBlank(
* message = "Message cannot be blank"
* )
* @Assert\Length(
* min = "3",
* minMessage = "Message is too short"
* )
*/
private $content;
/**
* @ORM\ManyToOne(targetEntity="Article", inversedBy="comments")
* @ORM\JoinColumn(referencedColumnName="id")
*/
private $article;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set author
*
* @param string $author
* @return Comment
*/
public function setAuthor($author)
{
$this->author = $author;
return $this;
}
/**
* Get author
*
* @return string
*/
public function getAuthor()
{
return $this->author;
}
/**
* Set email
*
* @param string $email
* @return Comment
*/
public function setEmail($email)
{
$this->email = $email;
return $this;
}
/**
* Get email
*
* @return string
*/
public function getEmail()
{
return $this->email;
}
/**
* Set content
*
* @param string $content
* @return Comment
*/
public function setContent($content)
{
$this->content = $content;
return $this;
}
/**
* Get content
*
* @return string
*/
public function getContent()
{
return $this->content;
}
/**
* Set article
*
* @param \Acme\BlogBundle\Entity\Article $article
* @return Comment
*/
public function setArticle(\Acme\BlogBundle\Entity\Article $article = null)
{
$this->article = $article;
return $this;
}
/**
* Get article
*
* @return \Acme\BlogBundle\Entity\Article
*/
public function getArticle()
{
return $this->article;
}
/**
* Set user_id
*
* @param \Acme\UserBundle\Entity\User $userId
* @return Comment
*/
public function setUserId(\Acme\UserBundle\Entity\User $userId = null)
{
$this->user_id = $userId;
return $this;
}
/**
* Get user_id
*
* @return \Acme\UserBundle\Entity\User
*/
public function getUserId()
{
return $this->user_id;
}
これが私の最初の問題であり、次にコメント (むしろ作成者名) の表示に関する 2 つ目の問題でした。$comments
Controller のプロパティに新しい値を作成する方法がわかりません(プロパティuser_id
が NULL でない場合は、この ID を持つこのユーザーに関するUser オブジェクト情報をロードし、それが NULLの場合はプロパティを使用しauthor
ます。はユーザーによるコメントで、作成者名には下線が引かれます. また、それは私のコントローラーで機能しますか、それとも TWIG テンプレートで実行できますか?
要するに私の質問:
- ログに記録されたユーザーとログに記録されていないユーザーでビルドされた「コメントを書く」フォームを表示する最良の方法はどれですか(
if
フォームビルダーとTWIGテンプレートで使用するのが最も効果的です) - 匿名/登録ユーザーによるコメントの区切り方と、登録ユーザーによるコメントの場合、名前に下線が引かれます