仅几个月的Symfony选择表格

时间:2018-10-19 17:41:31

标签: php symfony doctrine

我想在Symfony中创建表格,并且选择字段仅用几个月填充。

我有类似的东西:

$builder
        ->add('month','date', array(
            'widget' => 'choice',
        ));

我有一天|一个月年选择。

我为什么需要它?

我想选择月份,然后按按钮后我想从数据库中获取仅按所选月份排列的数据。 我需要数据库中的月份字典或日历吗?实体? 如何从此选择到存储库功能获取日期?

@edit以及如何用英语以外的其他语言显示月份?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

1。定义自己的自定义MonthChoiceType

namespace App\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\OptionsResolver\OptionsResolver;

class MonthChoiceType extends AbstractType
{
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'label' => 'choose month',
            'choices' => $this->getChoices()
        ));
    }

    protected function getChoices()
    {
        $choices = array(
            'January'   => 1,
            'February'  => 1,
            'March'     => 1,
            'April'     => 1,
            'May'       => 1,
            'June'      => 1,
            'July'      => 1,
            'August'    => 1,
            'September' => 1,
            'October'   => 1,
            'November'  => 1,
            'December'  => 1,
        );

        return $choices;
    }

    public function getParent()
    {
        return ChoiceType::class;
    }
}

2。在表单中使用它:

namespace App\Form;

use App\Form\MonthChoiceType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;

class ExampleType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('month', MonthChoiceType::class)
            ->add('save', SubmitType::class)
        ;
    }
}