微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将数组发送到 Blade 组件Laravel 8

如何解决将数组发送到 Blade 组件Laravel 8

我正在尝试创建一个 x-select 组件,我可以在其中传递一组选项作为属性之一。

这里是 create.blade.PHP

<?PHP $list = ['Received','In Process','Repaired','Completed','Shipped','Waiting on Boards','In Route'];?>
<x-select id="progress" class="block mt-1 w-full" name="progress" :value="old('progress')" :list="$list" />

这里是组件 select.blade.PHP

@props(['disabled' => false])

<select {{ $disabled ? 'disabled' : '' }} {!! $attributes->merge(['class' => 'rounded-md shadow-sm border-gray-300 focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50']) !!}>
    @foreach ($list as $item)
        <option @if($item == $value) selected @endif>{{ $item }}</option>
    @endforeach
</select>

问题在于它在运行 :list 时试图解析/打印 $attributes->merge()。这似乎不应该是这种情况,因为根据 Laravel 8 Blade 文档,您似乎可以添加一个在运行 :attribute 时不会打印的 $attributes->merge()。请参阅:https://laravel.com/docs/8.x/blade#default-merged-attributes

如果我将 :list 的值更改为普通字符串,它会在运行 $attributes->merge() 时打印该字符串,这与这些文档相反,并使其无法传递数组,因为它试图修剪数组并失败并出现此错误

trim() expects parameter 1 to be string,array given

解决方法

您可以先使用 json_encode 对数组进行字符串化:

<?php $list = json_encode(['Received','In Process','Repaired','Completed','Shipped','Waiting on Boards','In Route']); ?>

然后您可以使用 json_decode 将其转回数组:

@foreach(json_decode($list,true) as $item)
{{-- your code here --}}
@endforeach

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。