默认区域在错误服务开发/电话号码捆绑包中被忽略


Default region ignored in misd-service-development/phone-number-bundle

我正在使用 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}