我创建了一个多选形式,但是代替值,显示了键,在后端一切正常,是否可以显示值而不是键,这是表单代码:
$Themes[]=$options["data"][0]['Themes'];
$Styles[]=$options["data"][0]['Style'];
$builder
->add("Theme",ChoiceType::class,array(
"expanded"=>true,
"multiple"=>false,
'choices'=>$Themes,
))
->add("Style",ChoiceType::class,array(
"expanded"=>true,
"multiple"=>false,
'choices'=>$Styles,
))
->add('save',SubmitType::class,array(
'attr' => array('class' => 'save')
));
在Twig中,我只是使用start和end twig命令来启动表单。 非常感谢你。 从风格和主题转储
我用foreach循环修复它,但我认为它不是最好的解决方案?
编辑:完整代码
<?php
namespace AppBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\RadioType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class DesignFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$Styles=$options["data"][0]['Style'];
$Themes=$options["data"][0]['Themes'];
dump($Styles);
dump($Themes);
/*foreach ($options["data"][0]['Style'] as $style) {
$explode = explode('.', $style);
$Styles[$explode[0]] = $style;
}
foreach ($options["data"][0]['Themes'] as $theme) {
$explode = explode('.', $theme);
$Themes[$explode[0]] = $theme;
}*/
$builder
->add(
"Theme", ChoiceType::class, array("expanded" => true,
"multiple" => false,
'choices' => $Themes,
))
->add(
"Style", ChoiceType::class, array("expanded" => true,
"multiple" => false,
'choices' => $Styles,
'choice_value' => function ($value, $key){
return $value;
},
))
->add('save', SubmitType::class, array(
'attr' => array('class' => 'save')));
}
public function configureOptions(OptionsResolver $resolver)
{
}
public function getName()
{
return 'app_bundle_design_form_type';
}
}
答案 0 :(得分:1)
这很可能是由于Form
中的v2.7
重构造成的。
简答:请确保按以下格式提供您的选择:
[
'text_to_show0' => 'value0',
'text_to_show1' => 'value1'
....
'text_to_showN' => 'valueN'
]
array_flip()
可能对您有用。
长(呃)回答:您可以在表单组件 here
中阅读有关重构的所有内容希望这有帮助...
答案 1 :(得分:1)
你可以试试这个:
$Themes[]=$options["data"][0]['Themes'];
$Styles[]=$options["data"][0]['Style'];
$builder
->add("Theme",ChoiceType::class,array(
"expanded"=>true,
"multiple"=>false,
'choices'=>$Themes,
'choice_value' => function ($value, $key){
return $value;
},
))
->add("Style",ChoiceType::class,array(
"expanded"=>true,
"multiple"=>false,
'choices'=>$Styles,
'choice_value' => function ($value, $key){
return $value;
},
))
->add('save',SubmitType::class,array(
'attr' => array('class' => 'save')
));
我认为它应该有用,但我不确定。这是一个简单的解决方案。 choice_value
可以调用。