За последние 24 часа нас посетили 21818 программистов и 1024 робота. Сейчас ищут 712 программистов ...

Laravel. Вывод ошибок при валидации массива.

Тема в разделе "PHP для новичков", создана пользователем Sergey_Tsarev, 23 окт 2018.

  1. Sergey_Tsarev

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

    С нами с:
    17 мар 2016
    Сообщения:
    502
    Симпатии:
    105
    Всем привет!

    Есть форма с возможностью добавлять поля динамически. В итоге получаем что-то в этом роде:
    HTML:
    1.      <input type="text" name="name[]">
    2.      <input type="text" name="name[]">
    3.      <input type="text" name="name[]">
    4.      <input type="text" name="name[]">
    5. </form>
    Вопрос: как выводить ошибку валидации для конкретного поля? Пробовал сделать так:
    HTML:
    1.      <input type="text" name="name[]">  
    2.      @if ($errors->has('name.*'))
    3.           <div class="info-block">
    4.                {{ $errors->first('name.*') }}
    5.           </div>
    6.      @endif
    7.      
    8.      <input type="text" name="name[]">  
    9.      @if ($errors->has('name.*'))
    10.           <div class="info-block">
    11.                {{ $errors->first('name.*') }}
    12.           </div>
    13.      @endif
    14. </form>
    Но тогда ошибка выводится только под всеми полями, а мне нужно чтобы ошибка выводилась только под тем полем, в котором ошибка.
     
  2. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    $errors->has('name.2')
     
  3. Sergey_Tsarev

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

    С нами с:
    17 мар 2016
    Сообщения:
    502
    Симпатии:
    105
    Я ключ заранее не знаю.
     
  4. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    Ну ключи по порядку идут. Можно возвращать в js и там уже парсит все инпуты с name
     
    Sergey_Tsarev нравится это.
  5. Sergey_Tsarev

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

    С нами с:
    17 мар 2016
    Сообщения:
    502
    Симпатии:
    105
    Думал, что может какая фишка в Ларке есть для вывода таких ошибок :)
    Сделал так (обошёлся без js):

    PHP:
    1. @if(!empty(old('name')))
    2.     @for($i = 0; $i < count(old('name')); $i++)
    3.         <input type="text" name="name[]" value="{{ old("name.$i") }}">
    4.         @if ($errors->has("name.$i"))
    5.             <div class="info-block">
    6.                 {{ $errors->first("name.$i") }}
    7.             </div>
    8.         @endif
    9.     @endfor
    10. @else
    11.     <input type="text" name="name[]">
    12. @endif
     
  6. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.199
    Симпатии:
    184
  7. Sergey_Tsarev

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

    С нами с:
    17 мар 2016
    Сообщения:
    502
    Симпатии:
    105
  8. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.199
    Симпатии:
    184
    @Sergey_Tsarev там можно найти, как вывести нужную ошибку
     
  9. Sergey_Tsarev

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

    С нами с:
    17 мар 2016
    Сообщения:
    502
    Симпатии:
    105
    @Dimon2x, спасибо, но как просто вывести сообщение об ошибке я знаю. Меня интересовало как вывести ошибки, когда на сервер отправляются динамически созданные поля с одинаковыми именами.