forms - 如何使用 foreach 循环从我的实体中提取数据以在 formBuilder 中使用它?
问题描述
我在 Symfony 4 的控制器中使用 Formbuilder:
$form = $this->createFormBuilder($item)
->add('id', TextType::class, array('attr' => array('class' => 'form-control')))
->add('username', TextType::class, array('attr' => array('class' => 'form-control')))
->add('email', TextType::class, array('attr' => array('class' => 'form-control')))
->add('is_active', TextType::class, array('attr' => array('class' => 'form-control')))
->add('password', TextType::class, array('attr' => array('class' => 'form-control')))
我手动创建了实体中的那些字段。我现在要做的是使用循环自动创建这些字段。所以这是我的方法:
$form = $this->createFormBuilder($item)
foreach ($item as $field) {
->add($field, TextType::class, array('attr' => array('class' => 'form-control')))
}
但我收到错误消息:
语法错误,意外的“foreach”(T_FOREACH)
解决方案
您不能以这种方式链接方法,因为您错过了semicolon
before foreach
。
首先,您需要formBuilder
使用以下方法定义您的实例:
$form = $this->createFormBuilder($item); // (assuming `$item` is defined).
然后,您可以foreach
循环填充它:
$fields = array("id", "username", "email", "is_active", "password");
foreach ($fields as $field) {
$form->add($field, TextType::class, array('attr' => array('class' => 'form-control')));
}
然后,您的$form
遗嘱将包含所有填充的字段。
推荐阅读
- php - 如何测试仅使用 PHPUnit 调用模拟的特定方法
- java - 字符串缓冲区线程安全
- javascript - 如何保护 angularjs 指令的 css?
- python - python对象之间的通信?
- bash - 如何在命令行上获取 macOS 应用程序的 csreq?
- sql-server - 如何通过分隔符将单列拆分为 2 列
- laravel - Laravel 语法错误,意外的“路线”
- c# - Superpower:仅当字符串开始一行时才将字符串与解析器匹配
- android - SQLite:没有这样的表错误Android P问题
- php - 在 Woocommerce 中使用 wc_get_products 查询所有没有 API 的产品