显示值而不是键

时间:2016-12-13 21:05:11

标签: symfony

我创建了一个多选形式,但是代替值,显示了键,在后端一切正常,是否可以显示值而不是键,这是表单代码:

$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命令来启动表单。 非常感谢你。 从风格和主题转储 Dump from Style and Themes

我用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';
    }
}

2 个答案:

答案 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可以调用。