分类单元表格上的 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
模型可能也更好。
我已经向 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
模型可能也更好。