【问题标题】:Symfony2 form - edit saved dataSymfony2 表单 - 编辑保存的数据
【发布时间】:2013-02-04 04:12:26
【问题描述】:

我正在寻找如何使用从现有对象中获取的数据预填充表单的指导。我想它应该使用方法 setData,我期待一些简单的东西,比如 $form->setData($existingObject) 但没有成功。

为了更好地解释,让我们举一个简单的例子。
我有用户输入他的个人数据的表格。通过调用form.factory在控制器中创建表单,

$form = $this->get('form.factory')->create(new personType());

我有表单类“personType”,这个表单类定义了名为“person”的 data_class 对象。用户提交表单,数据保存在对象 person 中,该对象保存在 session 中。我需要选择重新打开表单并填写保存在会话中存储的对象中的数据。

【问题讨论】:

    标签: symfony-2.1


    【解决方案1】:

    在您的控制器中,您需要创建/查找您的对象,然后将其传递给您的 createForm

    $task = new Task();
    $task->setTask('写一篇博文');
    $task->setDueDate(new \DateTime('tomorrow'));

    $form = $this->createForm(new TaskType(), $task);

    http://symfony.com/doc/master/book/forms.html#creating-form-classes

    在你的例子中,试试

    $person = ...;
    $form = $this->get('form.factory')->create(new personType(), $person);

    【讨论】:

    • 感谢提示,我将调用改为 $form = $this->get('form.factory')->create(new personType(),$person);很好,现在我看到变量 $options['data'] 在函数 buildForm 中包含我的对象,但我想我错过了最后一步,我试图调用 $builder->setData($options['data']);但没有任何改变。如果我在控制器中转储变量 $form 我看到它已经包含从对象中获取的值但表单字段仍然是空的。字段显示在这样的树枝中 {{ form_widget(form.name) }} 我不认为有任何问题。
    • 好的,我解决了这个问题。 Tib 是对的,他的代码解决了问题,但我的课堂上没有 getter,只有魔术方法 __get,所以不幸的是没有错误,也没有数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-13
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多