我正在研究:
在使用此方法将广告系列放入控制器之前,
<?php
/**
* @Route("/{slug}", name="homepage")
*/
public function indexAction($slug)
{
......->findOneBy([ 'slug" = $slug, 'deleted' = 0, 'enabled' = 1 ])
}
然后,我决定使用@ParamConverter
注释来自动选择良好的Campaign对象。效果很好:
<?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”值无引号=相同的结果。 有什么想法吗?
答案 0 :(得分:0)
您可以创建一个自定义存储库功能,该功能可以通过slug和其他2个字段来检索Entity。
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Entity;
/**
* @Route("/{slug}", name="homepage")
* @Entity("campaign", expr="repository.findActive(slug)")
*/
public function indexAction(Campaign $campaign)
{}
然后,在CampaignRepository中创建一个findActive
函数。您将能够过滤已启用和已删除的字段。
不要忘记在Entity Annotation中设置repositoryClass。
如果存在实现此目标的另一种方法,我很想知道