验证中发生错误时,保留带有输入的动态行

时间:2019-11-26 08:38:10

标签: laravel

页面加载时我有这个表。

<table id="tableServices" class="table table-striped" style="width:100%">
    <thead>
    <th>Name</th>
    <th style="width: 15%; text-align-last: right;"><a href="#" class="fa fa-plus" id="addRow"></a></th>
    </thead>
    <tbody id="list_for_am">
    <tr>
        <td colspan="2">
            <input type="text" placeholder="Enter Name" class="form-control" name="worker[]">
        </td>
    </tr>
    </tbody>
</table>

并使用此代码根据用户的喜好添加动态行

$('#addRow').on('click', () => {
    $('#list_for_am').append('<tr>' +
        '<td colspan="2"> ' +
        '<input type="text" placeholder="Enter Name" class="form-control" name="worker[]">' +
        '</td>' +
        '</tr>'
    );
});

并从控制器验证我使用的数组元素之一是否存在空值

$request->validate([
    'schedule_date' => [
        'required',
        Rule::unique('schedules')->where(function ($query) use($data) {
            $query
                ->where('schedule_date', $data['schedule_date'])
                ->where('schedule_time', $data['schedule_time']);
        })
    ],
    'worker.*' => 'required'
]);

现在,如果有错误,表中的行将仅重置为一行,而不是用户先前添加的总行数。如何保留行数并显示错误发生的文本框?

1 个答案:

答案 0 :(得分:1)

尝试一下:

@foreach( old('worker') as $item )
    <td colspan="2">
        <input type="text" placeholder="Enter Name" class="form-control" name="worker[]" value="{{ old('worker')[$loop->index] }}">
    </td>
@endforeach