【发布时间】:2019-03-18 21:44:52
【问题描述】:
我有一个表单,它有多个 RadioTypes 来表示一个 Announcement 实体的类别。
$builder
->add('info', RadioType::class,
[
'label_attr' => ['class' => 'sr-only'],
'required' => false
])
->add('star', RadioType::class,
[
'label_attr' => ['class' => 'sr-only'],
'required' => false
])
我计划为 8 种选择提供 8 种不同的 RadioType。确定选择了哪个 RadioType 的最佳方法是什么。我目前的实现是每个都有一个if 声明,但这似乎是一个糟糕的解决方案。
if ($form->getData()['info'] == true) {
//do stuff
}
if ($form->getData()['star'] == true) {
//do stuff
}
【问题讨论】:
-
为什么
if似乎是一个糟糕的解决方案?您可以改用switch语句,尽管它们在语义上是相同的。 -
如果你有 8 个单选输入并且你只希望用户能够同时选择一个,那么没有理由使用 JS。这就是无线电输入默认的工作方式。这就是他们的目的。只需给它们相同的名称但不同的值即可。
-
@MagnusEriksson 的问题是,他们的代码生成了一堆不相关但名称不同的单选按钮,因此它们根本没有链接。
-
@miken32 - 除非他们按照你在回答中建议的那样做:-)
-
@MagnusEriksson 我实际上尝试了建议的答案,但它使样式变得更加困难(请参阅我对答案的评论)
标签: php symfony symfony-forms