nar*_*esh 6 php forms rest json symfony
Symfony 2 Form Component确实是一种东西.我想你知道的.试图理解什么是有效的只是一个看似不可能的任务; 我在浏览代码库时非常有经验..但是人,Form组件.. OMG
TL; DR
以下是详细信息,本期试图提问
\Symfony\Component\Form\Form?$form->add('ss', 'form')- 显然这个Core\FormType类涉及但是当我稍后检索它时,它是一个实例\Symfony\Component\Form\Form?这发生在哪里,这可能会覆盖,所以它在那里使用不同的类?细节
情况
想象一下,接收深JSON有效负载的Controller.此有效负载通过Form进行解码和验证.现在,大多数JSON结构都由Models(Doctrine ODM Entities)映射.但是一些子属性只是"哈希" - 允许客户发布他想要的任何内容.
那些"哈希"子属性是类型形式的字段,是复合标记的,可以有额外的字段.
问题
最重要的是,我们的问题是,所有"额外字段"都不会被返回$form->getData().我们无法指定那些字段(及其类型),因为我们不知道会发生什么 - 因此所有这些数据都是extraData的一部分.
解决方案?
所以我想 - 好吧 - 让我们修改FormFactory,这样它就会返回我们的Form的自定义扩展 - 一个在调用getData时也返回extraData的扩展.容易对.Noo,不容易......
我的想法让我检查FormFactory,FormBuilders,ResolvedFormTypes,等等......以及在所有重要的地方(比如formBuilder->getForm()) - 我想要覆盖/替换的类是instanciated static - 没有使用DIC ..(!)
小智 0
我在某处读到过,Symfony 2 中的 Form 组件是魔鬼亲自编写的,目的是让我们开发人员发疯。幸运的是,我并没有那么疯狂地尝试自己替换整个 Form 组件;)
抛开笑话不谈,当您定义一个表单(通过创建一个<entity>Type类,例如UserType)时,您正在定义一个新类型,它可以像单个文本输入一样简单,也可以像成熟的表单一样复杂(我们UserType以前的形式)。“真实”形式 ( Symfony\Component\Form\Form) 是根据您的类型定义创建的:
return $this->container->get('form.factory')->create(
new UserType(), new User(), $options
);
Run Code Online (Sandbox Code Playgroud)
您是否评估过为“额外数据”创建自定义表单类型的想法?或者,它可以映射为在提交之前由客户端 JavaScript 创建的 JSON 字符串。
| 归档时间: |
|
| 查看次数: |
205 次 |
| 最近记录: |