Бибиобекуль
Новичок
Здравствуйте.
Начинаю работать в Symfony. Хочу вывести список работников не нарушив MVC (но не знаю как).
У entity класса Worker есть поле dismissed которое boolean. Выводить должно "уволен" если поле истина и ничего иначе.
Сейчас я делаю эту проверку в самом шаблоне, но понимаю, что это как-то должно быть в контроллере.
Подскажите, как это умные люди делают?
// src/Entity/Worker.php
// src/Controller/WorkerController.php
//src/templates/worker/index.html.twig
Начинаю работать в Symfony. Хочу вывести список работников не нарушив MVC (но не знаю как).
У entity класса Worker есть поле dismissed которое boolean. Выводить должно "уволен" если поле истина и ничего иначе.
Сейчас я делаю эту проверку в самом шаблоне, но понимаю, что это как-то должно быть в контроллере.
Подскажите, как это умные люди делают?
// src/Entity/Worker.php
PHP:
class Worker
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $name;
/**
* @ORM\Column(type="date")
*/
private $begin;
/**
* @ORM\Column(type="boolean")
*/
private $dismissed;
public function getId(): ?int
{
return $this->id;
}
public function getName(): ?string
{
return $this->name;
}
public function setName(string $name): self
{
$this->name = $name;
return $this;
}
public function getBegin(): ?\DateTimeInterface
{
return $this->begin;
}
public function setBegin(\DateTimeInterface $begin): self
{
$this->begin = $begin;
return $this;
}
public function getDismissed(): ?bool
{
return $this->dismissed;
}
public function setDismissed(bool $dismissed): self
{
$this->dismissed = $dismissed;
return $this;
}
}
PHP:
class WorkerController extends AbstractController
{
/**
* @Route("/workers", name="worker")
*/
public function index()
{
$em = $this->getDoctrine()->getManager();
$workers = $em->getRepository(Worker::class)->findAll();
return $this->render('worker/index.html.twig', [
'controller_name' => 'WorkerController',
'workers' => $workers
]);
}
}
HTML:
{% extends 'base.html.twig' %}
{% block title %}Список рабочих{% endblock %}
{% block body %}
<style>
.example-wrapper { margin: 1em auto; max-width: 800px; width: 95%; font: 18px/1.5 sans-serif; }
.example-wrapper code { background: #F5F5F5; padding: 2px 6px; }
</style>
<div class="example-wrapper">
<h1>Список рабочих</h1>
<a href="{{ path('create_worker') }}">Добавить рабочего</a>
{% for worker in workers %}
<div class="card bg-primary text-white">
<div class="card-body">
<div>Имя: {{ worker.name }}</div>
<br />
<div>{{ worker.dismissed ? 'Уволен' : ''}}</div>
<br />
<div class="text-white bg-white"><a href="{{ path('dismiss_worker', {'worker' : worker.id}) }}">уволить</a></div>
</div>
</div>
{% endfor %}
</div>
{% endblock %}