我正在使用 misd-service-development/phone-number-bundle 和 Symfony3。电话号码的输入字段由两个字段组成:选择国家/地区和简单输入文本用于号码的其余部分。我正在尝试做的是在表单中创建记录时选择默认国家(地区)。
实体列如下所示:
/**
* @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",因为它是按字母顺序排在第一位的。还是我以错误的方式理解了"默认区域"?
您好,我有同样的问题,我所做的修复是通过创建一个表单扩展并像这样覆盖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}