2015-07-23 3 views
2

У меня есть Symfony 2.6 и форма для персональной информации в форме поле телефона, как rhisSymfony проверка телефона в поле формы

+38 (918) 280-1594 

и если разработчик пишет «_» или более цифры, пробел. Как в действии я это проверю? Как разработчик записи

+38 (918) 2 801_594 

И я поставил в БД

+38(918)2801594 

какие процессы и решения, или связки, чтобы решить эту проблему?

->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); 
    } 
)); 

Но как это работает? Я пишу телефон 65454 ###, и это «#» пишет в моей БД, это неправильно. Почему я не понимаю? И мне нужно определить количество цифр (12 цифр). Возможно, пожалуйста.

Я отправляю +30632666 $$ # и в БД устанавливаю этот +30632666 $$ #, но в форме видимый этот 30632666 это точно мне нужно в моей БД, мне нужно установить в базе данных правильный телефон и ограничить 13 символов - один " + "и 12 - цифровой

ответ

5

После установки MisdPhoneNumberBundle, вы можете использовать валидатор сверток в:

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; 
} 
1

Вы должны использовать MisdPhoneNumberBundle, это дает вам все, что вам нужно для телефонных номеров и Symfony.

+0

Как мне решить мою проблему, если я использую этот пакет? Мне нужно добавить assert в поле my entity или использовать его в форме?Пример –

+0

Я добавляю в поданную сущность '/ ** * @ORM \ Column (type =" phone_number ") */ защищенный $ phone;' и в форме '-> add ('phone_number', 'tel', array ('default_region' => 'GB', 'format' => PhoneNumberFormat :: NATIONAL)) 'и теперь ошибка –

+0

Какая ошибка? –

1

Я не понимаю, что означает, что вы пытаетесь заменить # чем-то другим. Если это preg_replace вызов, это не удивительно, что он не работает, как вы ищете строку, которая выглядит как:

#<br, (optional spaces), (Maybe /), ># 

Если вы хотите заменить <br/> на \n как комментарий говорит, вы нужно поставить эту модель:

/<br\s*\/?\s*>/i 

Примечания к / в начале и в конце, чтобы ограничить шаблон, и i в конце означает любой случай матч.

Если вы хотите заменить #, пробелы и _, я думаю, что лучше было бы заменить любой символ, который не является количество (, ). В этом случае это регулярное выражение должно работать (не проверено):

preg_replace('/[^0-9()]+/', "", $originalDescription); 

Что означает: заменить любую последовательность из 1 или более символа, который НЕ (из-за «^») в 0-9, ( или ) пустой строкой.

+0

это хорошо, но я публикую +30632666 $$ # и в БД задал этот +30632666 $$ #, но в форме видимый этот 30632666 это точно мне нужно в моей БД, мне нужно установить в базе данных правильный телефон и ограничить 13 символов - один «+» и 12 - цифровой –

+0

помогите, пожалуйста, отправьте +30632666 $$ #, а в БД задайте этот +30632666 $$ #, но в форме видно это 30632666, это именно то, что мне нужно в моей БД –

Смежные вопросы