symfony不用FormBuilder可以?
表单的话可以使用前端设计好的页面来进行嵌套?还是只能用FormBuilder来进行表单创建?如果用自己写的页面post过来的数据如何进行验证跟处理?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
表单的话可以使用前端设计好的页面来进行嵌套?还是只能用FormBuilder来进行表单创建?如果用自己写的页面post过来的数据如何进行验证跟处理?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
我感觉用FormBuilder来创建表单更好
有防止CSRF攻击的token
结合对象获取数据更方便
Validation更方便
可能刚开始接触时, 是感觉FormBuilder有点麻烦, 熟悉之后感觉还是蛮好用的
最好用他提供的,其实不管你要什么样的布局,都可以自定义的,可以修改表单的主题的,可以自定义一些字段的,如果自己弄的话,自己验证吧!
先回答前两个问题,复杂度很高的表单当然可以用前端设计好的页面来做,FormBuilder不一定是非用不可的。
第三个问题,@xxfaxy 说的要自己验证,在我看来,Symfony已经提供了Validation组件,用Validation的话,我觉得不完全算是自己验证吧。参考Symfony官网,滚动到页面最后,看Validating Values and Arrays这一小节。
我觉得框架虽然提供了很多功能,但那些功能毕竟是具有通用性的,在一些特例的时候,就不要被框架框住了。
完全可以!
其实你的问题的核心在于 如何把 post 过来的数据(Array类型) 映射到 实体(Entity类型)。
Form 是对 Entity 与 Request 对象的抽象,也就是说,你 Entity 中的 username 在经过 Form 组件抽象之后,输出是类似于 <input name="entityName[property]" /> 这种格式,其中 property 就是你 entity 中的属性(字段名),在 handleRequest 时,前端提交过来的的值,会被自动映射到 entity 的 property 属性中去,你可以理解为 Form 就是把你的 Entity 变的可交互。
那么如果不使用 Form 组件的话怎么办呢?
Symfony 也提供了 Serializer 组件也可以将 Array 映射到 Entity:
你的前端页面:
你的 Entity:
将你的 FORM 映射到实体:
像使用了 Form 那样去证一个 Entity:
参考:http://symfony.com/doc/current/components/serializer.html#deserializing-an-object