getForm() symfony2.8 后更改表单对象默认参数的最佳实践
Posted
技术标签:
【中文标题】getForm() symfony2.8 后更改表单对象默认参数的最佳实践【英文标题】:Best practice for changing default parameter of form object after getForm() symfony2.8 【发布时间】:2018-01-26 00:22:33 【问题描述】:我更新并总结了问题。
我要做的是在getForm()之后更改表单对象的默认值
public function newAction(Request $request)
$task = new Task();
$form = $this->createFormBuilder($task)
->add('task', TextType::class,array('data' => 'default text data') // Set the default data for loaded first time.
->add('save', SubmitType::class, array('label' => 'Save'))
->getForm();
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid())
//I want change the default value of task, I tried a few methods.
$d = $form->getData();
$form->get('task')->setData('replace text data'); // not work
$d->setData('second data'); // notwork
有没有可能?
【问题讨论】:
只需在createFormBuilder
行之前添加$task->setTask('Your Default Text');
。 (或者在 Task 类本身中设置该值,在构造函数中或作为 $task
类变量的默认值)
How to set default value for form field in Symfony2?的可能重复
我想我可以设置默认任务,但我想在提交后更改它
@yceruto ,我猜我的问题有点不同,所以我更新了问题本身
你是指提交后表单中任务字段关联的数据?
【参考方案1】:
Try this one.
$builder->addEventListener(FormEvents::POST_SUBMIT, function(FormEvent $even)
$data = $event->getData();
$form = $event->getForm();
if (isset($data['task']))
$data['task'] = "Default Task1";
$event->setData($data);
);
【讨论】:
以上是关于getForm() symfony2.8 后更改表单对象默认参数的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章
Extjs Combo - 如何使用 GetForm().load 将值加载到组合
Symfony2.8 表单 CollectionType 字段 manyTo many
使用 symfony2.8 创建新的 xml 文件并保存在系统中