Использование имен ввода многомерного массива с фасадом формы Laravel 4.2 вызывает ошибку при обратной передаче

У меня возникла проблема в Laravel 4.2 с фасадом формы при использовании входных имен, представляющих многомерные массивы. Форма будет правильно загружать, отображать и публиковать данные, если в Input::old() не установлены значения (из-за неудачной проверки и т. д.).

Вот простой пример, показывающий проблему:

маршруты.php:

Route::get('input-test', function() {
  return View::make('input_test.index');
});

Route::post('input-test', function() {
  return Redirect::back()->withInput(Input::all());
});

input_test/index.blade.php:

<!doctype html>
<html>
  <head>
    <title>Input Array Test</title>
  </head>

  <body>
    {{ Form::open(array('url' => 'input-test')) }}
      {{ Form::label('customer[some_customer_field][]', 'Customer Field:') }} <br>
      {{ Form::text('customer[some_customer_field][]', null) }}
      {{ Form::submit('Submit') }}
    {{ Form::close() }}
  </body>
</html>

Отправка этой формы вызовет ошибку:

htmlentities() expects parameter 1 to be string, array given 

Есть ли способ заставить входные данные с этими типами имен работать с обратной передачей?


person CoderBrandon    schedule 05.11.2014    source источник
comment
Передайте ему строку, а не массив.   -  person    schedule 05.11.2014


Ответы (1)


Такой путь не правильный.

После одного это

{{ Form::label('customer[0][field_1], 'Customer Field:') }} <br>
{{ Form::text('customer[0][field_2]', null) }}

После этого, если вы хотите продублировать его, вы должны использовать

{{ Form::label('customer[1][field_1], 'Customer Field:') }} <br>
{{ Form::text('customer[1][field_2]', null) }}

Но если вы хотите просто получить простой массив, вы должны использовать

{{ Form::label('customer[field_1], 'Customer Field:') }} <br>
{{ Form::text('customer[field_2]', null) }}
person Carlos Diaz    schedule 31.12.2015