Как определить переменную в компоненте laravel

#php #variables #components #laravel-8

#php #переменные #Компоненты #laravel-8

Вопрос:

я использую компоненты laravel 8, которые, согласно документу, могут передавать данные и использовать их. но мне нужна некоторая модификация переданных данных в качестве переменной, которую можно использовать в компоненте

в моем коде получена неопределенная переменная: ошибка covers

 <x-item_h :item="$item"/>
  

item-h.blade.php

 <div class="item-h">
    {{$item}}
    {{$covers}}
</div>
  

item-h.php

 class Item_h extends Component
{
    public $item;
    public $covers;

    public function __construct($item )
    {
        $this->item = $item;

        if ($item->getCover->count() > 0) {
            $covers = $item->getCover;
        } else {
            $covers = $item->artists->getCover;
        }
        
    }

    public function render()
    {
        return view('components.item_h');
    }
}
  

итак, как определить переменную в компоненте, которую можно использовать в нем?

Спасибо

Комментарии:

1. вам нужно использовать $this->covers вместо $covers в вашем Item_h конструкторе.

2. @remul я проверял это раньше, не работает

Ответ №1:

Во-первых, вам нужно добавить обложки, как при вызове компонента таким образом.

     <x-item_h :item="$item" covers/>
  

Теперь обновите конструктор и добавьте значение по умолчанию по вашему выбору, так что даже если вы забудете присвоить ему значение, это не приведет к сбою вашего представления

 class Item_h extends Component
{
    public $item;
    public $covers;

    public function __construct($item ,$covers={{REPLACE WITH DEFAULT VALUE}})
    {
        $this->item = $item;
        $this->covers = $covers; 
        if ($item->getCover->count() > 0) {
            $covers = $item->getCover;
        } else {
            $covers = $item->artists->getCover;
        }
        
    }

    public function render()
    {
        return view('components.item_h');
    }
}
  

Я уверен, что это решит вашу проблему

Комментарии:

1. Также, если вы хотите отправить обложки в качестве переменной, вы можете это сделать, также вы можете изменить $covers на #this->covers; это будет работать отлично