2016-07-05 73 views
1

我使用的是帶有Symfony3的misd-service-development/phone-number-bundle。電話號碼的輸入字段由兩個字段組成:與國家一起選擇,其餘數字的簡單輸入文本。我想要做的是在表單中創建記錄時選擇默認國家(地區)。默認區域在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

你好,我有同樣的問題,我做了什麼來解決這個問題是創建一個表單的延伸和覆蓋buildView方法這樣

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; 
    } 
} 

services.yml

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