Symfony 2.7。如何在表单提交后获得/设置表单字段的值? [英] Symfony 2.7. How to get/set value of the Form field after Form submission?

查看:281
本文介绍了Symfony 2.7。如何在表单提交后获得/设置表单字段的值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在表单提交之后为Symfony 2.7设置表单隐藏日期时间元素的值(unix timestamp)。

  $ starttimeStr = $ form-> get('meetingbundle_event [starttimeStr]'); //这里我打算以字符串格式获取用户输入的日期
$ dateObj = new \Datetime($ starttimeStr);
$ starttimeInt = $ dateObj-> getTimestamp();
$ form-> get('meetingbundle_event [starttimeInt]') - > setData($ starttimeInt); //这里我想设置十进制格式的日期时间

但是这不起作用,因为也没有id meetingbundle_event_starttime ,也不是名称 meetingbundle_event [starttimeStr] 不被接受为的有效参数get(string $ name )FormInterface:
http://api.symfony.com/3.0/Symfony/Component/Form/FormInterface.html
我通过在Firefox中使用Tools-> WebDeveloperExtension-> Forms-> DisplayFormDetails知道名称和id。



因此我尝试了 $ elem = $ form-> all(); 来查看我的名字表单元素,但我看不到结果:

  print_r($ elem); //崩溃网页浏览器
$ fs-> dumpFile('C:\Bitnami\wampstack-5.5.30-0\sym_prog\proj2_27\form.txt',$ elem); * /抱怨没有内存

$ elemser = serialize($ elem); //给出php不能序列化的错误Closure

$ elemjson = json_encode($ elem);
$ fs-> dumpFile('C:\Bitnami\wampstack-5.5.30-0\sym_prog\proj2_27\form.txt',$ elemjson); //输出空字符串

什么是Form字段的默认命名规则,以便我可以检索它们 $ form-> get('field_name')

解决方案

要获取元素值,请使用 $ form-> getData()['%element_name%']

因为我知道无法更改提交的表单通过调用 $ form-> setData()显式调用元素值。所以如果你想改变表单中提交的表单元素值,可以使用 FormBuilder 方法 addViewTransformer http://symfony.com/doc/current/cookbook/form/data_transformers.html 或在表单事件监听器 http://symfony.com/doc/current/components/form/ form_events.html

I want to set the value (unix timestamp) for the form hidden datetime element after the form submission, Symfony 2.7.

$starttimeStr=$form->get('meetingbundle_event[starttimeStr]');// here i intend to get user input for the date in string format
$dateObj = new \Datetime($starttimeStr); 
$starttimeInt=$dateObj->getTimestamp();
$form->get('meetingbundle_event[starttimeInt]')->setData($starttimeInt); //here i want to set  the datetime in decimal format

But this does not work, because nor id meetingbundle_event_starttime, nor name meetingbundle_event[starttimeStr] are not accepted as valid arguments for get(string $name) of FormInterface: http://api.symfony.com/3.0/Symfony/Component/Form/FormInterface.html I know name and id by using Tools-> WebDeveloperExtension->Forms->DisplayFormDetails in Firefox.

Thus i tried $elem=$form->all(); to see what are the names of my form elements, but i can not see the result:

print_r($elem); // crashes web-browser
$fs->dumpFile('C:\Bitnami\wampstack-5.5.30-0\sym_prog\proj2_27\form.txt', $elem ); */ Complains that there is no memory

$elemser=  serialize($elem); //gives error that  php can not serialize Closure

$elemjson = json_encode($elem);
$fs->dumpFile('C:\Bitnami\wampstack-5.5.30-0\sym_prog\proj2_27\form.txt', $elemjson ); // outputs empty strings

What is the default naming rules for Form fields in order i could retrieve them using $form->get('field_name')?

解决方案

To get element value use $form->getData()['%element_name%']
As I know it is impossible to change submitted form element value explicit by calling $form->setData(). So if you want to change submitted form element value inside form use FormBuilder method addViewTransformer http://symfony.com/doc/current/cookbook/form/data_transformers.html or do it in form event listener http://symfony.com/doc/current/components/form/form_events.html.

这篇关于Symfony 2.7。如何在表单提交后获得/设置表单字段的值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆