【问题标题】:Pre Fill Symfony Form Text Field with Data From the Database使用数据库中的数据预填充 Symfony 表单文本字段
【发布时间】:2015-07-18 23:42:01
【问题描述】:

如何在 symfony 中使用数据库中的数据预先填充文本字段。我在主机表中有一个名为 hostFee 的字段,当我创建表单时,我希望该数据预填充此文本字段。

我正在为新的 BookingSpecsType() 创建一个表单...

这是我的表单构建器元素。

$builder->add('hostFee', 'text', array(
        'required'=>false,
        'error_bubbling'=>true,
        'label'=>'Do you charge a hosting fee?',
        'data' => '??????? (How do I fill this text field dynamically with the Host table hostFee column data) ?????',
        'attr'=>array(
            'placeholder'=>'If yes, enter dollar amount $0.00',
            'class'=>'form-control'
        )
    ));

谢谢。

【问题讨论】:

  • 您可以看到为 crud 命令生成的代码并了解它是如何工作的。我猜你想编辑一个实体?
  • 文本输入有一个值属性,而不是数据。表单系统会根据您在创建表单时传入的数据对象自动设置 value 属性。该文档包含如何开始的示例。
  • 这对我有用:$form->get('hostFee')->setData($host->getHostFee());

标签: php symfony


【解决方案1】:

documentation 提供了许多示例。

当您在 Controller 操作中使用 $this->createForm 时,第二个参数允许您使用对象水合表单。

例如:

public function editAction()
{
        $user = $this->getDoctrine()->getRepository('User')->find(1); // YOUR OBJECT RETRIEVED FROM THE DB FOR EXAMPLE
        $form = $this->createForm(new EditType(), $user, array(
            'action' => $this->generateUrl('account_edit'),
        ));

        return $this->render(
            'AcmeAccountBundle:Account:edit.html.twig',
            array('form' => $form->createView())
        );
}

【讨论】:

    【解决方案2】:

    您不需要手动定义数据。如果您只是从水合实体初始化表单,那么所有数据都会初始化到所有字段中。

    【讨论】:

      猜你喜欢
      • 2011-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-07
      • 2015-02-09
      • 1970-01-01
      • 2015-11-21
      相关资源
      最近更新 更多