2016-07-05 4 views
1

私はmisd-service-development/phone-number-bundleをSymfony3と使用しています。電話番号の入力フィールドは、2つのフィールドで構成されています。国で選択し、残りの部分に単純な入力テキストを入力します。私がしようとしているのは、フォームにレコードを作成するときにデフォルトの国(地域)を選択することです。このように見えるフィールドを作成するためのmisd-service-development/phone-number-bundleでデフォルトの領域が無視されます

/** 
* @var string 
* @ORM\Column(type="phone_number", nullable=false) 
* @Assert\NotBlank() 
* @AssertPhoneNumber(defaultRegion="PL") 
*/ 
private $phoneOne; 

...とビルダーの機能::

->add('phoneOne', PhoneNumberType::class, [ 
    'label' => 'Telefon 1', 
    'widget' => PhoneNumberType::WIDGET_COUNTRY_CHOICE, 
    'default_region' => 'PL', 
    'preferred_country_choices' => [ 
     'PL', 'CN', 'DE', 'GB', 'FR', 
    ], 
]) 

...しかし、選択フィールドにデフォルト選択されたオプションがある

エンティティの欄には、次のようになります最初はアルファベット順になっているので、まだ「CN」です。あるいは、私は「デフォルト領域」を間違った方法で理解していますか?

答えて

1

こんにちは、私は同じ問題を持って、私はこの問題を解決するために行っていることは、フォームの拡張機能を作成することであるとservices.yml

restauprive.phone_number_type_extension: 
    class: UserBundle\Form\Extension\PhoneNumberTypeExtension 
    tags: 
     - { name: form.type_extension, extended_type: Misd\PhoneNumberBundle\Form\Type\PhoneNumberType} 
でこの

class PhoneNumberTypeExtension extends AbstractTypeExtension 
{ 

    /** 
    * {@inheritdoc} 
    */ 
    public function buildView(FormView $view, FormInterface $form, array $options) 
    { 
     $default_region = $options['default_region']; 
     if($default_region !== PhoneNumberUtil::UNKNOWN_REGION){ 
      $form->get('country')->setData($default_region); 
     } 
     parent::buildView($view, $form, $options); 
    } 


    /** 
    * Returns the name of the type being extended. 
    * 
    * @return string The name of the type being extended 
    */ 
    public function getExtendedType() 
    { 
     return PhoneNumberType::class; 
    } 
} 

ようbuildViewメソッドをオーバーライド

関連する問題