【问题标题】:Symfony2 - Dynamically modify form using user inputsSymfony2 - 使用用户输入动态修改表单
【发布时间】:2015-07-08 22:27:20
【问题描述】:

先介绍一点背景。我过去学习过如何使用“纯”php,最近开始使用 Symfony。对于我的许多问题,我一直在遵循几个指南(Cookbook、Lynda 和 Openclassrooms),但我无法找到当前问题的答案。

我有两个实体,我们将它们命名为 User 和 Player。 User 实体包含一个可以为 null 的 Player 属性。

因此,在创建用户期间,我希望有 3 种可能性:将播放器字段留空,选择一个已经存在的播放器,或创建一个新播放器。起初我想在播放器下拉列表中添加一个“创建新”选项,但只是选择了一个“创建新播放器”复选框。

这个想法是,如果选中该复选框,我想删除播放器下拉列表并添加一个嵌入式表单以创建一个新播放器。我尝试了几个事件(PRE_SET_DATA、PRE_SUBMIT 和 co),但似乎没有一个根据用户输入触发。

这是我会在 JScript 中完成的事情,但看到 Symfony 与纯 php 相比,它是一种截然不同的动物,我不知道该怎么做。任何帮助或建议将不胜感激!

【问题讨论】:

    标签: symfony


    【解决方案1】:

    PRE_SET_DATAPRE_SUBMIT 事件让您走在正确的轨道上。

    您需要使用 JavaScript 从服务器重新加载表单,并使用 Symfony 表单事件来重建表单。

    这是您要查找的文档:http://symfony.com/doc/current/cookbook/form/dynamic_form_modification.html

    不幸的是,Symfony 的表单组件相当复杂,所以没有简单的代码示例,您可以不阅读本文就直接使用它。

    另外阅读Form Events documentation有助于加深理解。

    【讨论】:

    • 感谢您的回答。我记得读过那部分,但我跳过了它,因为我不(现在仍然不)理解订阅 PRE_SET_DATA 和 PRE_SUBMIT 事件的意义。
    猜你喜欢
    • 1970-01-01
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    • 2021-11-10
    • 2020-10-24
    • 2015-09-07
    相关资源
    最近更新 更多