gpt4 book ai didi

symfony - 我可以向 FormType 表单动态添加字段吗?

转载 作者:行者123 更新时间:2023-12-04 16:29:45 26 4
gpt4 key购买 nike

我有一个扩展 AbstractType 的 PostType 表单。在 Controller 中,如果满足某些条件,我想为其添加一个字段。我可以以某种方式执行此操作,还是有其他修改 Controller 中的 FormType 的最佳实践?

谢谢

最佳答案

假设您有一个表单类型 文件类型 如下:

<?php
namespace EventFlowAnalyser\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;

class FileType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('name', 'text', array('label' => 'Name'));
}

public function getName()
{
return 'file';
}
}

您可以像这样在 Controller 中使用它:
$form = $this->createForm(new FileType(), $document);

哪里 $文档是一个包含一个字段(名称)的对象。
现在,如果您需要在另一个函数中向表单对象添加一个字段,您可以扩展 文件类型 添加您需要的字段;例如,如果您想编辑姓名字段但仍想跟踪以前的状态,请添加 original_name field 。
<?php
namespace EventFlowAnalyser\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;

use EventFlowAnalyser\Form\EventListener\EditFileFieldSubscriber;

class FileEditType extends FileType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
parent::buildForm($builder, $options);
$builder->add('original_name', 'hidden', array('mapped' => false));
}
}

现在,您可以像这样使用扩展形式:
$form = $this->createForm(new FileEditType(), $document);

并像这样修改字段的值:
$form->get('original_name')->setData($document->name);

我希望这会对某人有所帮助:o)

关于symfony - 我可以向 FormType 表单动态添加字段吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9337169/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com