Задать вопрос
Shlop
@Shlop
Full Stack Developer (PHP/Laravel/JavaScript)

Как правильно в Laravel сделать валидацию, чтобы можно было отправлять только true?

У меня в Form Requests классе прописано вот так:

public function rules(): array
    {
        return [
            'flag1' => ['required', 'in:true'],
            'flag2' => ['required', 'in:true'],
            'flag3' => ['required', 'in:true'],
            'flag4' => ['required', 'in:true'],
        ];
    }

Подходит ли такой код для проверки на то что-бы эти 4 флага были установлены в true ?
Я заметил, что когда передаю в FormData просто true то всё ок.
Если отправляю "true" (с кавычками), то не пропускает.

А если передаю JSON, типа такого:
{
    "flag1": "true"
}

то пропускает, хотя это ведь тоже строка тогда как и в FormData "true".
  • Вопрос задан
  • 111 просмотров
Подписаться 1 Простой 4 комментария
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Фулстек-разработчик расширенный
    20 месяцев
    Далее
  • Onskills
    PHP: базовый курс
    1 месяц
    Далее
  • Skillbox
    PHP-фреймворк Laravel
    2 месяца
    Далее
Пригласить эксперта
Ответы на вопрос 2
Fragster
@Fragster
помогло? отметь решением!
для этого есть правило accepted + boolean
второе, конечно, пропустит строку '1', но если у модели правильный casts, то все будет хорошо. теоретически можно добавить not_in:1, но надо ли?

Ну или самому строгий валидатор написать https://laravel.com/docs/master/validation#using-r...
Ответ написан
Комментировать
@v__V__v
Разработчик
Если вы отправляете "true" (с кавычками), то не пропускает потому, что валидатор получает строку, а у вас в параметрах указано true - логическое значение. Напишите свой валидатор, как вам предложили выше, и тогда вы вместо строгого равенства сможете использовать все, что вам угодно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы