我已经向Taxon实体添加了一个新字段,并在管理面板的编辑Taxon页面上的表单上显示了新字段。我的问题是我无法将我的新领域保存到Taxon。我收到一条成功消息,但只有现有的Taxon字段保存,而我的新字段清除。这是我的代码(请注意我对Sylius核心进行了更改而不是扩展,作为概念的证明。一旦我完成了这项工作,我就会正确扩展):
的src / Sylius /捆绑/ TaxonomyBundle /窗体/类型/ TaxonType.php:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('translations', 'sylius_translations', [
'type' => 'sylius_taxon_translation',
'label' => 'sylius.form.taxon.name',
])
->add('my_new_field', 'text', [
'label' => 'My New Field',
'required' => false
])
->addEventSubscriber(new AddCodeFormSubscriber())
->addEventSubscriber(new BuildTaxonFormSubscriber($builder->getFormFactory())
);
}
的src / Sylius /分量/核心/型号/ Taxon.php:
protected $ my_new_field;
和
public function getMyNewField() {
return $this->my_new_field;
}
public function setMyNewField($myNewField) {
$this->my_new_field = $myNewField;
}
更新了Taxon模型后,我运行了doctrine:diff,然后运行了迁移,将我的新字段添加到模型中。我可以确认,该字段已添加到数据库中。
该字段现在也会在编辑屏幕上显示在Taxons上。我可以在字段中输入文本并正确发布,但不会保存到分类单元。
我认为我错过了一些控制器逻辑,但似乎taxons经历了标准的ResourceController的updateAction(),我还没有弄清楚如何让这意识到需要保存的新领域。
答案 0 :(得分:2)
您可能在Taxon.orm.xml
文件中遗漏了ORM映射。
记住:
Sylius\Component\Taxonomy\Model\Taxon
添加了自己的媒体资源,则必须更新src/Sylius/Bundle/TaxonomyBundle/Resources/config/doctrine/model/Taxon.orm.xml
。Sylius\Component\Core\Model\Taxon
上添加了自己的属性,则必须更新src/Sylius/Bundle/CoreBundle/Resources/config/doctrine/model/Taxon.orm.xml
从 Core 组件扩展Taxon
模型也可能更好。