使用MISD Phone-Number-Bundle时,是否可以设置包含电话号码属性的实体返回的格式?例如,我有一个属性$ phoneNumber
当我调用$this->getPhoneNumber()
时,它返回格式化的字符串:
Country Code: 1 National Number: ########## Country Code Source:
但我希望它的格式(或类似):
1 (###) ###-####
我想要更改它的原因是因为在该实体中我实现了__toString()方法并希望返回的字符串是2个属性的组合,其中一个是" nickName"和其他类型的电话号码NickName - 1 (###) ###-####
这样做的目的是在我创建的表单类型的下拉表单元素设置中显示它们。
答案 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;
}
任何人都会发现任何问题或更好的方法吗?