Symfony3 - MISD电话号码捆绑格式

时间:2016-02-06 15:34:52

标签: php doctrine-orm symfony

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

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

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

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

2 个答案:

答案 0 :(得分:1)

电话号码是libphonenumber\PhoneNumber的实例。该类具有__toString方法,该方法不返回关于对象属性

的格式化调试信息

我已使用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 %}

这里有用于twig过滤器的参数2\libphonenumber\PhoneNumberFormat::NATIONAL

答案 1 :(得分:0)

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

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

    return $this->nickName . " - " . $number;
}

任何人都会发现任何问题或更好的方法吗?