使用Laravel刀片模板,是否有一种方法可以在foreach中包含一个变量并每次递增,或者更好的方法是什么?

<!doctype html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="csrf-token" content="{{ csrf_token() }}">
<link rel="shortcut icon" href="{{ asset('favicon.ico') }}" type="image/x-icon"/>
<link href="{{ asset('themes/css/bootstrap.min.css') }}" rel="stylesheet">
<link href="{{ asset('themes/fontawesome/css/all.min.css') }}" rel="stylesheet">
<link href="{{ asset('themes/css/style.css') }}" rel="stylesheet">
<title>Test</title>
</head>
<body>
<div class="d-flex min-vh-100 justify-content-center align-items-center flex-column">
@foreach($colors as $color)
<div id="showFilters">
<input type="text" id="name" class="form-control mb-5" name="filters[{{ $loop->index }}][name]" value="{{ $color->color_code }}">
</div>
@endforeach
<a id="addFilter" class="bg-primary text-white pt-2 pb-2 pe-3 ps-3 rounded-circle cursor-pointer">
<i class="fas fa-plus"></i>
</a>
</div>
<script src="{{ asset('themes/js/bootstrap.bundle.min.js') }}"></script>
<script src="{{ asset('themes/js/jquery-3.6.0.min.js') }}"></script>
<script>
let count = 0;
$('#addFilter').click(function () {
count++;
let html = '<input type="text" id="name" class="form-control mb-5" name="filters['+count+'][name]">';
$('#showFilters').append(html);
});
</script>
</body>
</html>发布于 2021-11-14 08:31:42
是的,这是可能的。如果你有一个普通的集合/数组,键等于索引,你可以这样写foreach循环:
@foreach($colors as $key => $color)然后像这样使用它:name="filters[{{$key}}][name]"
如果您有一个命名数组,您可以使用for(each)循环并包含一些php @php来定义和递增变量。
@php
$counter = 0;
@endphp
@foreach($colors as $color)
.....
@php
$counter++;
@endphp
@endforeach您还需要创建唯一的ids,如:id="name-{{$key}}"。这样,在jquery代码中,您就可以从id中获得正确的键。或者,您可以查看数据属性。
https://stackoverflow.com/questions/69961343
复制相似问题