laravel how to store a repeater field in the controller

51 Views Asked by At

I made a repeater field with jquery repeater in laravel blade and want to save it as an array in the store function. However it is saved as an empty values.

<div class="repeater-default">
      <div data-repeater-list="cage" class="drag">
        <div data-repeater-item="">
          <div class="form-group">
            <label class="col-sm-1 control-label">Make</label>
            <div class="col-sm-2">
              <select name="cage[0][level]" class="form-control">
               <option value="low">low</option>
                <option value="middle" selected="">middle</option>
                <option value="high">high</option>
              </select>
            </div>

            <label class="col-sm-1 control-label">Comment</label>
            <div class="col-sm-2">
              <input type="text" name="cage[0][comment]" value="Comment" class="form-control">
            </div>
            <div class="col-sm-2">
              <span data-repeater-delete="" class="btn btn-danger btn-sm">
                <span class="glyphicon glyphicon-remove"></span> Delete
              </span>
            </div>
          </div>
        </div>
        <div data-repeater-item="">
          <div class="form-group">
            <label class="col-sm-1 control-label">Type of Vaccine</label>
            <div class="col-sm-2">
              <select name="cage[1][level]" class="form-control">
                <option value="low">low</option>
                <option value="middle" selected="">middle</option>
                <option value="high">high</option>
              </select>
            </div>
            <label class="col-sm-1 control-label">Comment</label>
            <div class="col-sm-2">
              <input type="text" name="cage[1][comment]" value="Comment" class="form-control">
            </div>

            <div class="col-sm-2">
              <span data-repeater-delete="" class="btn btn-danger btn-sm">
                <span class="glyphicon glyphicon-remove"></span> Delete
              </span>
            </div>
          </div>
        </div>
      </div>
      <div class="form-group">
        <div class="col-sm-offset-1 col-sm-11">
          <span data-repeater-create="" class="btn btn-info btn-md">
            <span class="glyphicon glyphicon-plus"></span> Add
          </span>
        </div>
      </div>
      <hr>
    </div>

In the controller -> store function I have it now like this. It saves as an array but with empty values.

$level = $request->level;
$comment = $request->comment;
$data=[];
foreach ($validated['cage'] as $cage) {
    $data[]=[
        'level'              => $level,
        'comment'           => $comment,
    ];
}
$validated['cage'] = $data;

This is the output

[{"level":null,"comment":null},{"level":null,"comment":null}]

I probably call $level and $comment in a wrong way. Thank you in advance!

0

There are 0 best solutions below