Symfony3 - MISD电话号码捆绑包格式


Symfony3 - MISD Phone Number Bundle format

使用 MISD 电话号码捆绑包时,是否可以设置包含电话号码属性的实体返回的格式?例如,我有一个属性$phoneNumber

当我调用$this->getPhoneNumber()时,它会返回格式化的字符串:


Country Code: 1 National Number: ########## Country Code Source:但我想要它的格式(或类似格式):
1 (###) ###-####

我想更改它的原因是,在该实体中,我正在实现 __toString() 方法,并希望返回的字符串是 2 个属性的组合,一个是"昵称",另一个是这种格式或类似格式的电话号码NickName - 1 (###) ###-#### 这样做的目的是在我创建的表单类型的下拉表单元素设置中显示它们。

电话号码是libphonenumber'PhoneNumber的实例。此类具有__toString方法,该方法返回有关对象属性的未格式化调试信息

  • https://github.com/giggsey/libphonenumber-for-php/blob/master/src/PhoneNumber.php

我已经使用SonataAdminBundle temlate选项格式化了电话号码:

$listMapper
    ->add('phoneNumber', PhoneNumberType::class, [
        'template' => ':CRUD:phoneNumber_list_field.html.twig'
    ]);

模板:CRUD:phoneNumber_list_field.html.twig内容:

{% extends 'SonataAdminBundle:CRUD:base_list_field.html.twig' %}
{% block field %}
    {% if object.phoneNumber is null %}
        -
    {% else %}
        {{ object.phoneNumber|phone_number_format(2) }}
    {% endif %}
{% endblock %}

这里'libphonenumber'PhoneNumberFormat::NATIONAL树枝过滤器的参数2

  • https://github.com/giggsey/libphonenumber-for-php/blob/master/src/PhoneNumberFormat.php

我想我解决了自己的问题...我的__toString()方法看起来像这样,似乎可以做我想做的事。

use libphonenumber'PhoneNumberUtil;
//...
public function __toString()
{
    $phoneNumberUtil = PhoneNumberUtil::getInstance();
    $number = $phoneNumberUtil->format($this->phoneNumber, 'libphonenumber'PhoneNumberFormat::NATIONAL);     
    return $this->nickName . " - " . $number;
}

有人看到任何问题或更好的方法吗?