我具有以下结构的symfony
形式。
if (!$propertyId) {
$form->add('room-type', 'choice', [
'label' => false,
'choices' => $this->di->get("roomType")->getRoomByPropertyId($propertyId),
'placeholder' => 'All Room types',
'attr' => ['class' => 'room-type-id hidden']
]);
} else {
$form->add('room-type', 'choice', [
'label' => false,
'choices' => $this->di->get("roomType")->getRoomByPropertyId($propertyId),
'placeholder' => 'All Room types',
'attr' => ['class' => 'room-type-id']
]);
}
我想对此进行重构,以便在hidden
为propertyId
的情况下连接null
属性。
像这样的东西以及我尝试过的其他各种组合都行不通。
['class' => 'room-type-id' + isset($propertyId) ? '' : 'hidden']
我该怎么做?
答案 0 :(得分:1)
我看到您在控制器中有该代码。最好将表单逻辑移到其自己的类中,然后在其中添加私有方法。
private function createChoiceClass($propertyId)
{
$class = 'room-type-id';
if (!empty($propertyId) {
$class .= ' hidden';
}
return $class;
}
然后使用构建方法
$form->add(
....
'attr' => ['class' => $this->createChoiceClass($propertyId)],
);
您可以在此处看到如何创建表单类https://symfony.com/doc/3.4/forms.html#creating-form-classes
使用表单类比在控制器中进行维护要容易得多
答案 1 :(得分:0)
我通过使用此代码成功做到了。
'attr' => isset($propertyId) ? ['class' => 'room-type-id'] : ['class' => 'room-type-id hidden']