Вопрос:

Laravel 5.2 Проверка файлового массива

validation laravel

91 просмотра

1 ответ

3017 Репутация автора

У меня есть форма с тремя полями: title, bodyи photo[]. Я пытаюсь проверить это так, чтобы был заполнен хотя бы один элемент, но я не могу заставить его работать. Если я загружаю файл, я все равно получаю сообщение об ошибке titleи body.

public function rules()
{
    return [
        'title' => 'required_without_all:body,photo.*',
        'body' => 'required_without_all:title,photo.*',
        'photo.*' => 'required_without_all:title,body',
        'photo.*' => 'mimes:jpeg,gif,png',
    ];
}

Обновление: Джонатан указал, что у меня были неправильные правила. Я исправил их и теперь использую это. Это все еще не работает; когда я пытаюсь загрузить фотографию, я получаю сообщение об ошибке, что другие поля обязательны для заполнения.

public function rules()
{
    return [
        'title' => 'required_without:body,photo.*',
        'body' => 'required_without:title,photo.*',
        'photo.*' => 'required_without:title,body|mimes:jpeg,gif,png',
    ];
}
Автор: timgavin Источник Размещён: 22.08.2016 08:47

Ответы (1)


0 плюса

5387 Репутация автора

Решение

Если вы хотите убедиться, что photoполе является массивом, тогда вам нужно, 'photo' => 'array'а затем вы можете использовать его 'photo.*' => ''для других проверок дочерних элементов массива.

Правила разделяются символом «труба», |поэтому, если вы собираетесь объединить их в своем примере, это будет так 'photo.*' => 'required_without_all:title,body|mimes:jpeg,gif,png',. Я не вижу, как вы используете канал для разделения правил, поэтому я не уверен, что вы знаете об этом.

Это, возможно, было тем, где вы ошиблись в первую очередь (два ключа в ассоциативном массиве идентичны), и некоторый вид приоритета влияет на отмену одного из правил.

Вы можете попробовать что-то вроде этого (для записи, я думаю, вы были на правильном пути, чтобы начать с использования, required_without_allпоскольку это требует необходимости, если все указанные поля отсутствуют):

public function rules()
{
    return [
        'title' => 'required_without_all:body,photo',
        'body' => 'required_without_all:title,photo',
        'photo' => 'array',
        'photo.*' => 'required_without_all:title,body|mimes:jpeg,gif,png',
    ];
}

Ссылка

Автор: Jonathan Размещён: 22.08.2016 09:52
Вопросы из категории :
32x32