我已经向Taxon实体添加了一个新字段,并在管理面板的编辑Taxon页面上的表单上显示了新字段 . 我的问题是我无法将我的新领域保存到Taxon . 我收到一条成功消息,但只有现有的Taxon字段保存,而我的新字段清除 . 这是我的代码(注意我正在更改Sylius核心而不是扩展,作为概念的证明 . 一旦我有这个工作,我将正确扩展):
src/Sylius/Bundle/TaxonomyBundle/Form/Type/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/Component/Core/Model/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(),我无法弄清楚如何让这意识到需要保存的新字段 .
1 回答
您可能在
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
模型也可能更好 .