Symfony - ParamConverter: ручные атрибуты "включено" и "удалено"
Я работаю на:
- Symfony 3.4.14
- SensionExtraFrameworkBundle 5.2.0
Прежде чем я использовал этот метод, чтобы получить мою кампанию внутри моего контроллера:
<?php
/**
* @Route("/{slug}", name="homepage")
*/
public function indexAction($slug)
{
......->findOneBy([ 'slug" = $slug, 'deleted' = 0, 'enabled' = 1 ])
}
Тогда я решил использовать @ParamConverter
аннотация для автоматического выбора хорошего объекта кампании. Работает отлично:
<?php
/**
* @Route("/{slug}", name="homepage")
* @ParamConverter("campaign", options={"mapping":{ "slug" = "slug" }})
*/
public function indexAction(Campaign $campaign)
{
}
Тем не менее, моя сущность также содержит 2 атрибута deleted
а также enabled
и я не знаю, как включить его в mapping
вариант. Ниже то, что я уже пробовал:
<?php
/**
* @Route("/{slug}", name="homepage")
* @ParamConverter("campaign", options={"mapping":{ "slug" = "slug", "deleted" = "0", "enabled" = "1" }})
*/
public function indexAction(Campaign $campaign)
{
}
Кавычки / Нет кавычек для значения "0" = тот же результат. Любая идея?
1 ответ
Вы можете создать пользовательскую функцию репозитория, которая будет извлекать сущность по слагу и двум другим полям.
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Entity;
/**
* @Route("/{slug}", name="homepage")
* @Entity("campaign", expr="repository.findActive(slug)")
*/
public function indexAction(Campaign $campaign)
{}
Затем создайте findActive
функция в CampaignRepository. Вы сможете фильтровать по включенному и удаленному полю.
Не забудьте установить класс репозитория в аннотации сущности.
Если есть другой способ достичь этой цели, мне интересно знать