Symfony Form에서 연월을 풀다운으로 선택하는 필드를 만드는 방법
DateTime 오브젝트에 매핑하는 전제.
어떻게 하는 것이 정답인지는 모르지만,
DateType 를 그대로 사용하면 괴롭기 때문에 우선 잡하게 만들어 움직인 확장 FormType 를 실어 둡니다.<?php
namespace Fivestar\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToArrayTransformer;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\FormView;
use Symfony\Component\Form\ReversedTransformer;
use Symfony\Component\OptionsResolver\OptionsResolver;
class YearMonthType extends AbstractType
{
    /**
     * {@inheritdoc}
     */
    public function getParent()
    {
        return DateType::class;
    }
    /**
     * {@inheritdoc}
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        if ($options['widget'] === 'choice') {
            $builder
                ->resetViewTransformers()
                ->addViewTransformer(new DateTimeToArrayTransformer(
                    $options['model_timezone'], $options['view_timezone'], array('year', 'month')
                ))
            ;
        }
        if ($options['input'] === 'array') {
            $builder
                ->resetModelTransformers()
                ->addModelTransformer(new ReversedTransformer(
                    new DateTimeToArrayTransformer($options['model_timezone'], $options['model_timezone'], array('year', 'month'))
                ))
            ;
        }
    }
    /**
     * {@inheritdoc}
     */
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'widget' => 'choice',
        ]);
    }
    /**
     * {@inheritdoc}
     */
     public function finishView(FormView $view, FormInterface $form, array $options)
     {
         if ($options['widget'] === 'choice') {
             $view['day']->vars['attr']['style'] = 'display:none;';
         }
     }
    /**
     * {@inheritdoc}
     */
    public function getBlockPrefix()
    {
        return 'year_month';
    }
}
DateType 를 기반으로 풀다운 형식을 사용하는 전제로서, day 필드의 존재마다 지우고 싶지만 아마 무리인 것 같다.포인트는 Transformer 계를 한 번 리셋하고 재설정하고 있는 곳.
style="display:none;" 오브젝트로 연월만을 취급하는 경우, 내부적으로는 일이나 시분초도 보완되어 1번 오브젝트를 경유하면 DateTime 는 day 는 아니고 null 제3 인수에서 1 와 year 만을 참조하도록 해 두면 평화입니다.$ php -r "var_dump((new DateTime('2015-12'))->format('Y-m-d H:i:s'));"
string(19) "2015-12-01 00:00:00"
입력 필수 요소라면
month 근처에 적당한 finishView 값을 value 라고 입력 필수의 경우 밖에 고려하지 않을 것 같은 코드도 상당히 많았으므로, 여러가지 고려된 녀석이 표준 나름으로 들어가 있으면 좋다고 생각했습니다. 난 하지 않습니다.표시 결과
$builder->add('yearMonth', YearMonthType::class);
우선 그대로 낸 경우:

{{ form_row(form.yearMonth) }}
크레카의 유효 연월용 :

{{ form_row(form.yearMonth, {
  'date_pattern': '{{ month }}/{{ year }}',
}) }}
                Reference
이 문제에 관하여(Symfony Form에서 연월을 풀다운으로 선택하는 필드를 만드는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/fivestar/items/d95e4555b482d70902d4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)