我需要根据分类创建一个新的促销规则:例如,所有具有特定分类的产品(不是整个订单)可享受 10% 的折扣。
我阅读了文档,阅读了 sylius 附带的两条规则的代码(项目数和订单总数)。我开始创建一个新的规则检查器(目前它只返回 true),所以现在我有了第三个可用的提升规则(“分类法”)。然后我创建了它的配置表单类型。在这里,我需要创建一个选择列出所有配置的分类单元,以便能够选择哪个分类单元触发促销。在这里我被困住了。我在 TaxonomyConfigurationType.php 中尝试过的(我注入了实体管理器):
class TaxonomyConfigurationType extends AbstractType
{
protected $em;
public function __construct($em)
{
$this->em = $em;
}
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('theme', 'choice',
array(
'mapped' => false,
'multiple' => false,
'empty_value' => 'Choose a taxon',
'choices' => $this->buildThemeChoices()
)
);
}
public function getName()
{
return 'ecad_promotion_rule_taxonomy_configuration';
}
protected function buildThemeChoices() {
$choices = array();
/// how can I access the taxonomy repo ?
$r = $this->em->getRepository('BoutiqueBundle:Theme');
$entities = $r->findAll();
foreach ($entities as $e) {
$choices[$e->getId()] = $e->getName();
}
return $choices;
}
}
我重写了分类单元类(BoutiqueBundle:Theme)以翻译我的分类单元,所以我收到了这个错误:
Class "Ecad\BoutiqueBundle\Entity\Theme" sub class of "Sylius\Bundle\TaxonomiesBundle\Model\Taxon" is not a valid entity or mapped super class.
实现这一目标的任何线索?最后,我需要在 $configuration 中存储一个分类单元 ID,以便能够检查产品是否符合条件。
另一件事:是否可以只指定一种产品作为促销主题?
谢谢