2

Input::all() を使用して、動的に生成されたフォーム (ユーザーがフィールドを追加できるようにするために jQuery を使用しています) から入力を取得しています。フィールド名は「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'
    )
)

各配列を反復処理して新しい配列を作成せずにこれを行う簡単な方法はありますか? 入力を生成するより良い方法はありますか? ありがとう。

4

1 に答える 1

4

OK みんな、Laravel IRC の alexrussell の助けを借りて、私たちはそれを理解しました。

まず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();
});

get リクエスト URL に追加する delegateId 変数を作成し、routes.php で次のようにします。

Route::get('add-delegate/{id}', function($id) {
    return View::make('admin.bookings.partials.add-delegate', compact('id'));
});

これにより、フォーム フィールドの生成に使用するビューに 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)
于 2013-11-07T11:31:32.673 に答える