使用 laravel filepond 在 php 中的 foreach 循环内显示未定义变量

问题描述 投票:0回答:1

我的 $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;?>

the output image

尝试从 $images 中获取值作为 $gallery in for every 但它显示未定义,因为 $images 按预期获取值,但没有获取作为 foreach 中的 $gallery 的值($images as $gallery)。

php laravel-blade filepond
1个回答
0
投票

确实,我似乎正在尝试在 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; ?>

`

© www.soinside.com 2019 - 2024. All rights reserved.