Я получаю некоторый вклад от динамически сгенерированной формы (я использую jQuery, чтобы позволить пользователю добавлять поля) с помощью Input :: all (). Имена полей: 'first_names []', 'last_names []' и 'emails []'.
Теперь переменная $ input выглядит так:
array (size=4) '_token' => string '3VCQFUmAx8BNbSrX9MqjGtQhYovOaqecRUQSAL2c' (length=40) 'first_names' => array (size=1) 0 => string 'John' (length=4), 1 => string 'Jane' (length=4) 'last_names' => array (size=1) 0 => string 'Doe' (length=3), 1 => string 'Doe' (length=3) 'emails' => array (size=1) 0 => string 'johndoe@example.com' (length=24), 0 => string 'janedoe@example.com' (length=24)
Я хочу создать массив из этого ввода, который выглядит так:
array ( 0 => array( 'first_name' => 'John', 'last_name' => 'Doe', 'email' => 'johndoe@example.com' ), 1 => array( 'first_name' => 'Jane', 'last_name' => 'Doe', 'email' => 'janendoe@example.com' ) )
Есть ли простой способ сделать это без повторения каждого массива и создания новых? Есть ли лучший способ генерировать ввод? Благодарю.
Хорошо, ребята, с помощью alexrussell в Laravel IRC мы это выяснили.
Во-первых, JS:
var delegateId = 0; $('.add-delegate').click(function() { $.get('/add-delegate/' + delegateId++, function(html) { $(html).appendTo('#delegates'); }); }); $(document).on('click', '.remove-delegate', function() { $(this).parent().parent().remove(); });
Мы создаем переменную delegateId, которую добавляем к URL-адресу запроса на получение, а затем в наших маршрутах.php мы делаем:
Route::get('add-delegate/{id}', function($id) { return View::make('admin.bookings.partials.add-delegate', compact('id')); });
Это отправляет идентификатор в представление, которое мы используем для создания полей формы. Тогда в форме мы делаем:
<div class="row-fluid"> <div class="span12"> <input type="text" name="delegates[{{ $id }}][first_name]" placeholder="First Name"> <input type="text" name="delegates[{{ $id }}][last_name]" placeholder="Last Name"> <input type="text" name="delegates[{{ $id }}][email]" placeholder="Email"> <label class="checkbox"> <input type="checkbox" name="delegates[{{ $id }}][prerequisites]"> Prerequisites </label> <button type="button" class="btn btn-danger remove-delegate">Remove</button> </div> </div>
Как только мы получим вход для делегатов, используя:
Input::get('delegates')
У нас есть хороший массив для работы, это именно то, что мы делаем:
array (size=2) 0 => array (size=3) 'first_name' => string 'John' (length=4) 'last_name' => string 'Doe' (length=3) 'email' => string 'johndoe@example.com' (length=19) 1 => array (size=3) 'first_name' => string 'Jane' (length=4) 'last_name' => string 'Doe' (length=3) 'email' => string 'janedoe@example.com' (length=19)