Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Добрый день, есть форма, в которой по кнопке создаются дополнительные поля, этих полей можно создать неограниченное количество и каждое поле необходимо проверить на длину текста.
В контроллер данные передаются через Request файл, в данный момент это безобразие в request файле выглядит так:
public function rules()
{
return [
'question-img-1' => 'image|mimes:jpeg,png,jpg,gif|size:2000',
'question-title-1' => 'max:60',
'question-desc-1' => 'max:300',
'question-img-2' => 'image|mimes:jpeg,png,jpg,gif|size:2000',
'question-title-2' => 'max:60',
'question-desc-2' => 'max:300',
'question-img-3' => 'image|mimes:jpeg,png,jpg,gif|size:2000',
'question-title-3' => 'max:60',
'question-desc-3' => 'max:300',
'question-img-4' => 'image|mimes:jpeg,png,jpg,gif|size:2000',
'question-title-4' => 'max:60',
'question-desc-4' => 'max:300',
'question-img-5' => 'image|mimes:jpeg,png,jpg,gif|size:2000',
'question-title-5' => 'max:60',
'question-desc-5' => 'max:300',
'question-img-6' => 'image|mimes:jpeg,png,jpg,gif|size:2000',
'question-title-6' => 'max:60',
'question-desc-6' => 'max:300',
'question-img-7' => 'image|mimes:jpeg,png,jpg,gif|size:2000',
'question-title-7' => 'max:60',
'question-desc-7' => 'max:300',
];
}
public function attributes()
{
return[
'question-img-1' => 'question image',
'question-title-1' => 'question title',
'question-desc-1' => 'question desc',
'question-img-2' => 'question image',
'question-title-2' => 'question title',
'question-desc-2' => 'question desc',
'question-img-3' => 'question image',
'question-title-3' => 'question title',
'question-desc-3' => 'question desc',
'question-img-4' => 'question image',
'question-title-4' => 'question title',
'question-desc-4' => 'question desc',
'question-img-5' => 'question image',
'question-title-5' => 'question title',
'question-desc-5' => 'question desc',
'question-img-6' => 'question image',
'question-title-6' => 'question title',
'question-desc-6' => 'question desc',
'question-img-7' => 'question image',
'question-title-7' => 'question title',
'question-desc-7' => 'question desc',
];
}
Как-то можно сделать эту проверку без прописывания имени каждого поля, что-то типа 'question-desc*' => 'max:300'. Понимаю что можно в контроллере циклом через validator сделать это, а в request как?
Не в сети
на фронте сделайте массив questions в котором объекты с img и title
и тогда
questions.*.title => max:60
questions.*.img => image|mimes:jpeg,png,jpg,gif|size:2000
Не в сети
если имена полей будут массивом, т.е. на фронте будут все иметь имя question-title[] и question-desc[] и на беке будут автоматически приводитсья к массив, то валидировать их можно как
[
'question-title' => 'array',
'question-title.*' => 'string|max:60',
...
https://laravel.com/docs/8.x/validation … ing-arrays
Изменено artoodetoo (25.09.2020 10:44:10)
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
Страницы 1