我的 $gallery 在 laravel Blade 中显示 undefile,但我正在获取 $images 上的数据。我正在使用 laravel 和 filepond
<?php if(count($images)): ?>
pond.setOptions({
files: [
<?php foreach($images as $gallery): ?> {
source: "{{ asset('storage/' . $gallery->image) }}",
options: {
id: "{{ $gallery->id }}",
type: 'local'
},
},
<?php endforeach;?>
]
})
<?php endif;?>
尝试从 $images 中获取值作为 $gallery in for every 但它显示未定义,因为 $images 按预期获取值,但没有获取作为 foreach 中的 $gallery 的值($images as $gallery)。
确实,我似乎正在尝试在 Laravel 上下文中利用 Blade 模板语法将 PHP 代码嵌入到 JavaScript 块中。这里的挑战是 Blade 的 @foreach 和 JavaScript 的大括号之间的潜在冲突。
为了解决这个问题,我选择使用 @json 指令。该指令很方便,因为它将 PHP 数组转换为 JSON 字符串,使其可以安全地包含在 JavaScript 代码中。这是我想出的代码的更新版本:`
<?php if (count($images)): ?>
pond.setOptions({
files: {!! json_encode($images->map(function ($gallery) {
return [
'source' => asset("storage/{$gallery->image}"),
'options' => [
'id' => $gallery->id,
'type' => 'local',
],
];
})) !!}
});
<?php endif; ?>
`