Symfony 2 - 具有默认值的复选框,除非来自数据库的数据
Symfony 2 - Checkbox with default Value unless Data From Database
我有一个正确呈现的复选框。如果数据库中没有数据,我希望默认选中该复选框。
如果我设置 "data" = True
,它会显示选中的复选框。现在,如果我从数据库中获取数据,它不会将复选框覆盖为布尔值 false。如果我删除数据" => true 那么我可以从数据库中获取正确的复选框,但我无法设置默认复选框。
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('isFieldFirstname', 'checkbox', array(
'label' => 'Show First Name',
'required' => false,
"data" => true,
)
)
简单回顾一下
- 数据库 - 未找到记录 - 显示已选中的默认复选框
- 如果记录发现使用来自数据库的值 ex isFieldFirstname = false 未选中复选框
您实施 buildForm
方法来描述表单的结构,而不是值。这些值来自普通数组或数据对象。 Symfony 使用 DataAccess 组件来映射它们。
- 在您的复选框中删除 "data" 选项
- 调用您的复选框 "fieldFirstname"(否 "is")
// MyFormType.php
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add(
'fieldFirstname',
'checkbox',
[
'label' => 'Show First Name',
'required' => false
]
);
}
- 创建数据class
// MyFormData.php
class MyFormData {
private $fieldFirstname;
public function isFieldFirstname() {
return $this->fieldFirstname;
}
public function setFieldFirstname($fieldFirstname) {
$this->fieldFirstname = $fieldFirstname;
}
}
- 创建你的动作
// MyController.php
// ...
public function myAction() {
$data = new MyFormData();
$data->setFieldFirstname(
! $myService->isDataInDatabase()
);
$form = $this->createForm(
new MyFormType(),
$data
);
// ...
}
现在没有测试,但应该可以。
我有一个正确呈现的复选框。如果数据库中没有数据,我希望默认选中该复选框。
如果我设置 "data" = True
,它会显示选中的复选框。现在,如果我从数据库中获取数据,它不会将复选框覆盖为布尔值 false。如果我删除数据" => true 那么我可以从数据库中获取正确的复选框,但我无法设置默认复选框。
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('isFieldFirstname', 'checkbox', array(
'label' => 'Show First Name',
'required' => false,
"data" => true,
)
)
简单回顾一下
- 数据库 - 未找到记录 - 显示已选中的默认复选框
- 如果记录发现使用来自数据库的值 ex isFieldFirstname = false 未选中复选框
您实施 buildForm
方法来描述表单的结构,而不是值。这些值来自普通数组或数据对象。 Symfony 使用 DataAccess 组件来映射它们。
- 在您的复选框中删除 "data" 选项
- 调用您的复选框 "fieldFirstname"(否 "is")
// MyFormType.php
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add(
'fieldFirstname',
'checkbox',
[
'label' => 'Show First Name',
'required' => false
]
);
}
- 创建数据class
// MyFormData.php
class MyFormData {
private $fieldFirstname;
public function isFieldFirstname() {
return $this->fieldFirstname;
}
public function setFieldFirstname($fieldFirstname) {
$this->fieldFirstname = $fieldFirstname;
}
}
- 创建你的动作
// MyController.php
// ...
public function myAction() {
$data = new MyFormData();
$data->setFieldFirstname(
! $myService->isDataInDatabase()
);
$form = $this->createForm(
new MyFormType(),
$data
);
// ...
}
现在没有测试,但应该可以。