За последние 24 часа нас посетил 19071 программист и 1619 роботов. Сейчас ищут 992 программиста ...

Валидация массива переданного из формы

Тема в разделе "Laravel", создана пользователем ADSoft, 15 апр 2022.

Метки:
  1. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.854
    Симпатии:
    748
    Адрес:
    Татарстан
    Всю голову сломал, сделал какой то велосипед... но чую должны быть стандартные средства

    Итак, на форме есть селект
    HTML:
    1. <select name="test[]" multiple>...</select>
    как видим - имя - name[]

    как проверить данное поле на то - что оно не пусто (ну или в массиве есть хотя-бы один непустой элемент) и вернуть результат в том-же ракурсе

    Код (Text):
    1. [
    2.    messages => "The given data was invalid.",
    3.    errors => [
    4.       'name[]' => ['поле является обязательным']
    5.    ]]
    6. ]
    Проверка через FormRequest

    Мои пробы:
    1.
    PHP:
    1. $rules = ['name' => 'required|array|min:1|'];
    проверяет, но в ответе отдает
    2.
    PHP:
    1. $rules = ['name[]' => 'required|array|min:1|'];
    отдает ответ как надо, но не проверяет совсем... ошибку отдает всегда - независимо от переданных значений

    ну и в общем, как то странно с именами - которые массивы работает
    .
    PHP:
    1. $rules = ['name.ru' => 'required|array|min:1|'];
    проверяет, но в ответе отдает
    а хотелось name[ru]

    2.
    PHP:
    1. $rules = ['name[ru]' => 'required|array|min:1|'];
    отдает ответ как надо, но не проверяет совсем... ошибку отдает всегда - независимо от переданных значений
     
    #1 ADSoft, 15 апр 2022
    Последнее редактирование: 15 апр 2022
  2. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.484
    Симпатии:
    281
    Вы же в курсе, что добавив к значению атрибута name квадратные скобки(test[]) вы создали массив?
    То есть, если в обработчике, вы хотите обратиться к этому массиву, то его ключом будет именно указанное значение(без скобок $_POST['test']).
    А если хотите обратиться к его, какому-то конкретному элементу, то нужно указать его ключ ($_POST['test'][0])
     
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.788
    Симпатии:
    1.328
    Адрес:
    Лень
    PHP:
    1. $rules = [ 'name.*' => 'required|....' ];
     
  4. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.854
    Симпатии:
    748
    Адрес:
    Татарстан
    А посмотри что даст ответ? Моя задача - чтоб ошибки ключами не так как в проверке были, а так как передаются в реквест были
    --- Добавлено ---
    Давно и безповоротно, вопрос о другом был
     
  5. Павел Голубцов

    Павел Голубцов Активный пользователь

    С нами с:
    4 мар 2019
    Сообщения:
    183
    Симпатии:
    4
    это полная хрень ты сам знаешь как оно работает.
    для чего пустой массив и что куда заполняет не смеши.
    Пустой массив как объявленная переменная оно есть а но не имеет значения пока работаем.
    Создали но пока нет значения но сущность есть.