分类单元表格上的 Sylius 新字段未保存

Sylius New Field on Taxon Forms not Saving

我已经向 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 的编辑屏幕上。我可以在字段中输入文本并正确发布,但永远不会保存到分类单元中。

我想我遗漏了一些控制器逻辑,但类群似乎通过了标准 ResourceController 的 updateAction() 并且我一直无法弄清楚如何让它意识到需要的新领域有待挽救。

您可能在 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

核心组件扩展Taxon模型可能也更好。