Answer the question
In order to leave comments, you need to log in
Error while outputting data in Symfony twig?
When outputting data to twig, it throws the following error Neither the property "created_at" nor one of the methods "created_at()", "getcreated_at()"/"iscreated_at()"/"hascreated_at()" or "__call()" exist and have public access in class.
although if you dump it, you can see that the data has been received. In addition, in essence there are getters and setters, as well as this is a regular datetime field and is not associated with other entities. What is the error?
entity
<?php
namespace App\Entity;
use App\Repository\NewsRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity(repositoryClass=NewsRepository::class)
*/
class News
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $title;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $text;
/**
* @ORM\Column(type="string", length=255)
*/
private $url;
/**
* @ORM\Column(type="smallint")
*/
private $status_id;
/**
* @ORM\Column(type="integer")
*/
private $views;
/**
* @ORM\ManyToOne(targetEntity=User::class, inversedBy="news")
* @ORM\JoinColumn(nullable=false)
*/
private $author;
/**
* @ORM\ManyToMany(targetEntity=Tag::class, inversedBy="news")
*/
private $tags;
/**
* @ORM\Column(type="datetime")
*/
private $created_at;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $updated_at;
/**
* @Assert\File(
* maxSize = "64M",
* mimeTypes = {"image/jpeg", "image/png", "video/JPEG"},
* mimeTypesMessage = "Неверный формат файла.Ожидается jpeg,png",
* )
*/
private $image;
/**
* @ORM\OneToMany(targetEntity=Comment::class, mappedBy="news", orphanRemoval=true)
*/
private $comments;
public function __construct()
{
$this->tags = new ArrayCollection();
$this->comments = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getTitle(): ?string
{
return $this->title;
}
public function setTitle(string $title): self
{
$this->title = $title;
return $this;
}
public function getText(): ?string
{
return $this->text;
}
public function setText(?string $text): self
{
$this->text = $text;
return $this;
}
public function getUrl(): ?string
{
return $this->url;
}
public function setUrl(string $url): self
{
$this->url = $url;
return $this;
}
public function getStatusId(): ?int
{
return $this->status_id;
}
public function setStatusId(int $status_id): self
{
$this->status_id = $status_id;
return $this;
}
public function getViews(): ?int
{
return $this->views;
}
public function setViews(int $views): self
{
$this->views = $views;
return $this;
}
public function getAuthor(): ?User
{
return $this->author;
}
public function setAuthor(?User $author): self
{
$this->author = $author;
return $this;
}
/**
* @return Collection|Tag[]
*/
public function getTags(): Collection
{
return $this->tags;
}
public function addTag(Tag $tag): self
{
if (!$this->tags->contains($tag)) {
$this->tags[] = $tag;
}
return $this;
}
public function removeTag(Tag $tag): self
{
if ($this->tags->contains($tag)) {
$this->tags->removeElement($tag);
}
return $this;
}
public function getCreatedAt(): ?\DateTimeInterface
{
return $this->created_at;
}
public function setCreatedAt(\DateTimeInterface $created_at): self
{
$this->created_at = $created_at;
return $this;
}
public function getUpdatedAt(): ?\DateTimeInterface
{
return $this->updated_at;
}
public function setUpdatedAt(?\DateTimeInterface $updated_at): self
{
$this->updated_at = $updated_at;
return $this;
}
public function getImage()
{
return $this->image;
}
public function setImage($image): self
{
$this->image = $image;
return $this;
}
/**
* @return Collection|Comment[]
*/
public function getComments(): Collection
{
return $this->comments;
}
public function addComment(Comment $comment): self
{
if (!$this->comments->contains($comment)) {
$this->comments[] = $comment;
$comment->setNews($this);
}
return $this;
}
public function removeComment(Comment $comment): self
{
if ($this->comments->contains($comment)) {
$this->comments->removeElement($comment);
// set the owning side to null (unless already changed)
if ($comment->getNews() === $this) {
$comment->setNews(null);
}
}
return $this;
}
}
public function indexAction(ContainerInterface $container,NewsRepository $newsRepository, NewFileUploader $fileUp)
{
$news = $newsRepository->findPopulars();
$mostPopular = $newsRepository->findMostPopular();
return $this->render('main/index.html.twig',[
'news' => $news,
'fileUp' => $fileUp,
'mostPopular' => $mostPopular
]);
}
{% if news %}
<div class="col-md-6">
<div class="row">
{% for post in news %}
<div class="col-md-6 col-6 paddding animate-box" data-animate-effect="fadeIn">
<div class="fh5co_suceefh5co_height_2"><img src="{{ asset(fileUp.getImage(post.id)) }}" alt="img"/>
<div class="fh5co_suceefh5co_height_position_absolute"></div>
<div class="fh5co_suceefh5co_height_position_absolute_font_2">
<div class=""><a href="#" class="color_fff"> <i class="fa fa-clock-o"></i> {{post.created_at|date('Y-m-d')}}</a></div>
<div class=""><a href="{{ path('show', {url: post.url}) }}" class="fh5co_good_font_2">{{post.text|slice(0,100)}}</a></div>
</div>
</div>
</div>
{% endfor %}
</div>
</div>
</div>
</div>
{% endif %}
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question