Laravel Livewire key () ожидает, что параметр 1 будет массивом, задано целое число | вложенные компоненты | загрузка компонента внутри цикла - PullRequest
2 голосов
/ 28 февраля 2020

Я уже некоторое время работаю с Laravel livewire , у меня есть вложенные компоненты, то есть список товаров для моего сайта, и внутри этого списка есть еще один компонент для добавления товара в список желаний. Согласно документации здесь , там написано

"Подобно VueJs, если вы визуализируете компонент внутри al oop, Livewire не может отследить, какой Один из них заключается в том, что. Чтобы исправить это, livewire предлагает специальный синтаксис «ключа»: «

Вот так:

<div>
    @foreach ($users as $user)
        @livewire('user-profile', $user, key($user->id))
    @endforeach
</div>

Вот мои фрагменты кода из моего проекта.

<div>
    @foreach($products as $product)
        <div class="product-box white-bg mb-8" data-dusk="product"> 
             {{-- here im passing product id as param in key(),  'productList' is a static value for a variable of mount(). --}}
                @livewire('desktop.wish-list-add', $product, key($product->id), 'productList')

            <div class="product-content d-flex justify-content-between align-items-center p-5">
                ............... 

    @endforeach
    {{ $products->links() }}
</div>

Проблема в том, что когда я пытаюсь передать $ product-> id в качестве параметра для key (), он выдает ошибку

key() expects parameter 1 to be array, integer given

Но do c ясно показывает, что мы имеем передать id как param. Кто-нибудь сталкивался с этой проблемой до сих пор?

1 Ответ

2 голосов
/ 28 февраля 2020

хорошо, я нашел решение (хотя оно не имеет смысла для меня, но оно работает: /) Вы должны передать другие параметры для mount () следующим образом:

@livewire('desktop.wish-list-add', 'productList', $product->id, key($product->id))

Вместо это:

@livewire('desktop.wish-list-add', $product, key($product->id), 'productList')

...