如何为多项选择添加empty_value

时间:2017-06-29 15:31:34

标签: php

我有两个字段:年份选择和文章输入字段。当用户没有在输入字段中为文章写任何选择时,这意味着它应该在一年内显示所有文章。我通过选择多个选项来更改此输入字段,我刚添加了我的文章的名称。在此修改后,我不添加选项ALL。这是我的路线中的小代码:

旧代码:

->add('lru', 'text', array(
   'data' => '',
   'required' => FALSE))

新代码:

 ->add('lru', 'choice', array(
 'choices' => array(
'\'ATSU\'' => 'ATSU',
 .
 .
 .
 ),
'required' => FALSE,
'empty_value' => 'ALL',
'empty_data' => NULL,
'multiple' => TRUE

我做了一个关于' empty_value'我发现只有在expand和multiple选项都设置为false时才会应用此选项。我改变了

'multiple' => FALSE

它变得很好。 我的图书馆是:

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Session\Session;

这是我的form的小代码:

$user = $app['security']->getToken()->getUser();
        $default = 'ALL';
        $form = $app['form.factory']->createBuilder('form')->setMethod('GET')
                ->add('currency', 'choice', array(
                    'choices' => array(
                        'USD' => 'Dollar',
                        'EUR' => 'Euro'),
                ))
                ->add('nature', 'choice', array(
                    'choices' => array( .....),

                ->add('year', 'choice', array(
                    'choices' => array(date('Y') => date('Y'),
                        date('Y') - 1 => date('Y') - 1,
                        date('Y') - 2 => date('Y') - 2,
                        date('Y') - 3 => date('Y') - 3,
                        date('Y') - 4 => date('Y') - 4,
                        'Yearly' => 'Yearly'),
                    'required' => TRUE,
                ))
                  ->add('lru', 'choice', array(
                    'choices' => array(

                      // I want add the default value ALL here but I don't understand how


                    '\'ATSU\'' => 'ATSU', .... )


                    'required' => FALSE,
                    'empty_value' => 'ALL',
                    'empty_data' => NULL,
                    'multiple' => TRUE
                      ))

请告诉我如何更改我的代码,并保留我对multiple choice的选择。谢谢。

1 个答案:

答案 0 :(得分:1)

只需将默认对象或数组传递给表单构建器。

看看https://symfony.com/doc/current/components/form.html#setting-default-values

在你的情况下,它可以是这样的:

<?php

$user = $app['security']->getToken()->getUser();
        $default = 'ALL';
        $form = $app['form.factory']->createBuilder('form',['lru' => [$default]])->setMethod('GET')
                ->add('currency', 'choice', array(
                    'choices' => array(
                        'USD' => 'Dollar',
                        'EUR' => 'Euro'),
                ))
                ->add('nature', 'choice', array(
                    'choices' => array( .....),

                ->add('year', 'choice', array(
                    'choices' => array(date('Y') => date('Y'),
                        date('Y') - 1 => date('Y') - 1,
                        date('Y') - 2 => date('Y') - 2,
                        date('Y') - 3 => date('Y') - 3,
                        date('Y') - 4 => date('Y') - 4,
                        'Yearly' => 'Yearly'),
                    'required' => TRUE,
                ))
                  ->add('lru', 'choice', array(
                    'choices' => array(

                      // I want add the default value ALL here but I don't understand how

                    $default => $default,

                    '\'ATSU\'' => 'ATSU', .... )


                    'required' => FALSE,
                    'empty_value' => 'ALL',
                    'empty_data' => NULL,
                    'multiple' => TRUE
                      ))

我希望这会有所帮助。