Laravel - проверить массив на существующий массив и NULL - PullRequest
0 голосов
/ 23 сентября 2019

В настоящее время создаю конечные точки API для расписания повторений, но у меня возникла проблема с проверкой массива, чтобы убедиться, что он существует в предварительно установленном массиве:

Например, значения repeat_day должны иметь правильные дни

Это запрос API:

{
   "repeat_by": "daily",
   "repeat_day": [
       "Sunday",
       "xxx" 
   ],
   "repeat_date": [],
   "repeat_week": [],
   "repeat_month": []
}

Это StoreUpdateScheduleRequest

public function __construct()
{
    $this->dayArray = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
    //and some other array
}

public function rules()
{
    $repeatDayRule = request()->get('repeat_by') == "daily" ? ['required', Rule::in($this->dayArray)] : '';
    //and some other validation rules

    return [
        "repeat_day.*" => $repeatDayRule
        "repeat_date.*" => $repeatDateRule
        "repeat_week.*" => $repeatWeekRule
        "repeat_month.*" => $repeatMonthRule
    ];
}

Моя проблема в том, что когда я предоставляю null или пустой массив,проходит проверку, которая должна завершиться неудачей.

{
    "repeat_by": "daily"
    "repeat_day": null //or even []
}

Примечание:

  • Я попытался сделать проверку на request_day вместо request_day.*, но это не помоглонеправильно проверить день.

  • Хотел бы использовать встроенную проверку Laravel (может быть, я что-то упустил) и не хочу расширять проверку.


Заранее спасибо!Ура!

Ответы [ 2 ]

1 голос
/ 23 сентября 2019

Вы должны реализовать оба правила при проверке этого массива с помощью правила filled.Примерно так:

return [
    "repeat_day" => 'array|filled',
    "repeat_day.*" => $repeatDayRule,
    "repeat_date" => 'array|filled',
    "repeat_date.*" => $repeatDateRule,
    "repeat_week" => 'array|filled',
    "repeat_week.*" => $repeatWeekRule,
    "repeat_month" => 'array|filled',
    "repeat_month.*" => $repeatMonthRule
];

С помощью этого кода вы убедитесь, что, например, repeat_day является массивом и его заполнено .Следующим предложением вы проверите, что его значения действительны с $repeatDayRule

0 голосов
/ 23 сентября 2019

'repeat_day' => 'nullable',

вставить это в ваш запрос проверки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...