Symfony在表单领域验证电话

shu*_*van 2 php mysql symfony doctrine-orm

我有表格现场电话的Symfony 2.6和个人信息表格,如rhis

+38 (918) 280-1594
Run Code Online (Sandbox Code Playgroud)

如果开发人员写"_"或更多数字,空格.我如何检查这个?喜欢开发者写

+38 (918) 2 801_594
Run Code Online (Sandbox Code Playgroud)

我在DB中设置了

+38(918)2801594
Run Code Online (Sandbox Code Playgroud)

解决这个问题的流程和决策或捆绑包是什么?

->add('telephone', null, array('label' => 'Telephone', 'max_length' => 255, 'required' => false));

$builder->get('telephone')->addModelTransformer(new CallbackTransformer(
    // transform <br/> to \n so the textarea reads easier
    function ($originalDescription) {
        return preg_replace('/[^0-9()]+/', "", $originalDescription);
    },
    function ($submittedDescription) {
        // remove most HTML tags (but not br,p)
        $cleaned = strip_tags($submittedDescription, '<br><br/><p>');
        // transform any \n to real <br/>
        return str_replace("\n", '<br/>', $cleaned);
    }
));
Run Code Online (Sandbox Code Playgroud)

但它是如何工作的?我写了电话65454 ###而这个"#"写在我的数据库中这是错的.为什么我不明白?我需要确定位数(12位数).也许请举例.

我发布了+30632666 $$#并在DB中设置了这个+30632666 $$#但是在形式上可见这个30632666这正是我需要在我的数据库中,我需要在数据库中设置正确的电话并限制13个字符 - 一个"+"和12个 - 数字

Jon*_*nny 6

安装MisdPhoneNumberBundle后,您可以使用bundle的验证器:

use Doctrine\ORM\Mapping as ORM;
use Misd\PhoneNumberBundle\Validator\Constraints as MisdAssert;

/**
 * @ORM\Entity
 * @ORM\Table
 */
class Entity
{

  // ...

  /**
   * @ORM\Column(type="string", length=50)
   * @MisdAssert\PhoneNumber()
   */
  private $phone;
}
Run Code Online (Sandbox Code Playgroud)