使用 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;
}
有人看到任何问题或更好的方法吗?