Ссылка на проект в гитхабе https://github.com/deen8122/phone-book-laravel
В задании было такое условие: "Пользователь может вводить номер телефона в трёх форматах: +79991235678, +7(999)123-56-78, 89991235678. При сохранении телефон должен приводиться к общему формату 89991235678 и возвращаться в таком формате из базы."
То есть, пользователь может вводить номера в трех форматах. И все это дело нужно грамотно отвалидировать в ревест классе, используя стандартные правила валидации.
Долго не думая накидал такую валидацию:
1 2 3 4 5 6 7 8 9 10 11 12 13 | <? public function rules() { return [ 'name'=>'required|string', /* * Пользователь может вводить номер телефона в трёх форматах: +79991235678, +7(999)123-56-78, 89991235678 */ 'phone' => 'required|regex:/(\+7[0-9]{10}$)|(8[0-9]{10}$)|(\+7\([0-9]{3}\)[0-9]{3}-[0-9]{2}-[0-9]{2}$)/', 'description' => 'nullable|string|max:400', 'image' => 'nullable|image', ]; } |
По идее должно работать, регулярка написана правильно, но была ошибка: не правильное регулярное выражение. (Точно не помню.)
Как оказалось , если в регулрном выражении используется знак "|" то нужно передавать правила как массив. И это написано в документации. (тут фейспалм)
Быстренько переделываю:
1 2 3 4 5 6 7 8 9 10 11 12 13 | <? public function rules() { return [ 'name'=>'required|string', /* * Пользователь может вводить номер телефона в трёх форматах: +79991235678, +7(999)123-56-78, 89991235678 */ 'phone' => ['required', 'regex:/(\+7[0-9]{10}$)|(8[0-9]{10}$)|(\+7\([0-9]{3}\)[0-9]{3}-[0-9]{2}-[0-9]{2}$)/'], 'description' => 'nullable|string|max:400', 'image' => 'nullable|image', ]; } |
И все рааботает как надо.
Комментариев нет:
Отправить комментарий