2015-07-15 5 views
4

Когда я использую функцию проверки в Laravel, как я могу добавить предварительно определенные строки, которые разрешены во входном?Laravel - Проверка соответствия строк

Например, допустим, что я хочу, чтобы в Вводе содержалось только одно из следующего: married,single,gay, как я могу это сделать?

$validator = Validator::make($credentials, [ 
     'profile' => 'required|max:255', // Here I want Predefined allowed values for it 
]); 
+0

вы пробовали соответствие регулярного выражения на поле слова, которые вы хотите, чтобы соответствовать? – ODelibalta

+0

Прямо сейчас я использую php 'in_array', чтобы вручную проверять и бросать excemption, а havent - проверять регулярное выражение laravel. можете ли вы показать образец, пожалуйста? – Neel

ответ

5

Рекомендуется в Laravel документации поставить правила проверки в массиве, когда они становятся больше, и я думал, что 3 правила были достаточно. Я думаю, что это делает его для более читаемого контента, но вам это не нужно. Я добавил часть regex ниже, и у меня она работает. Я не так хорошо разбираюсь в регулярных выражениях. Дай мне знать.

$validator = Validator::make($credentials, [ 
     'profile' => ["required" , "max:255", "regex:(married|single|gay)"] 
]); 
+0

Отлично! Это сработало! Когда вход не соответствует регулярному выражению, он выдает исключение 'Формат профиля недействителен'. Я также удалил '' max: 255 '', так как я все равно согласую его с regex. Большое вам спасибо @ODelibalta Это именно то, что я хотел! :) – Neel

+0

Прохладный. Рад помочь. – ODelibalta

9

Лучше использовать «в» правила проверки, как это:

$validator = Validator::make($credentials, [ 
     'profile' => ["required" , "max:255", "in:married,single,gay"] 
]); 
+0

Это хорошая альтернатива. Спасибо @omarjebari – Neel

+0

Это решает мою проблему. – Jonjie

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