以下是我的實體,表單和DBAL配置爲misd-phonenumberbundle與Symfony2.8集成。但是我仍然得到下面的錯誤,有人可以讓我知道如何解決這個問題嗎?我寫了幾行代碼將字符串轉換爲PhoneNumber obj,然後表單加載正常,但我的問題是我們需要顯式地將其轉換嗎?這是不是自動處理?Symfony2 - 錯誤phonnumberbundle:無法轉換屬性路徑「phone_number」的值:預期 libphonenumber PhoneNumber
實體條目:
/**
* @ORM\Column(type="phone_number", nullable=true)
* @AssertPhoneNumber(defaultRegion="US", message="Please specify a valid phone number")
*/
private $phoneNumber;
DBAL映射:
doctrine:
dbal:
types:
phone_number: Misd\PhoneNumberBundle\Doctrine\DBAL\Types\PhoneNumberType
表:
->add('phoneNumber', PhoneNumberType::class, array('default_region' => 'US', 'format' => PhoneNumberFormat::NATIONAL, 'required' => false))
自定義代碼來處理錯誤:
if($user->getphoneNumber()!="")
{
$util = $this->container->get('libphonenumber.phone_number_util');
$phoneNUmber = $util->parse($user->getphoneNumber(), "US");
$user->setphoneNumber($phoneNUmber);
}
else
{
$phoneNUmber = new \libphonenumber\PhoneNumber;
$user->setphoneNumber($phoneNUmber);
}
Error:
Uncaught PHP Exception Symfony\Component\Form\Exception\TransformationFailedException: Unable to transform value for property path "phone_number": Expected a \libphonenumber\PhoneNumber at webapp/vendor/symfony/symfony/src/Symfony/Component/Form/Form.php line 1149
您可能需要使用變壓器(有關說明,請參閱官方SF2文檔:http://symfony.com/doc/current/form/data_transformers.html)。這個捆綁包可能附帶一個。 – thoroc
順便說一下,查看包的自述文件,表單域是一個文本:https://github.com/misd-service-development/phone-number-bundle#using-libphonenumberphonenumber-objects-in-forms – thoroc
謝謝@thoroc。我通過使用Symfony DataTransformer組件解決了這個問題。 – Dhananjay