Как инициализировать компонент

#laravel

#laravel

Вопрос:

Я работаю с laravel 8.

Я хочу создать компонент «select-family». Который будет простым выбором.

Я создал компонент таким образом :

php artisan make:component SelectFamily

Эта команда создала 2 файла :

  • «views/components/select-family.blade.php «
  • «View/Components/SelectFamily.php «

В SelectFamily я написал :

 public function render()
{   
    return view('components.select-family', [
        'families' => Family::all()
    ]);
}
 

И в блейд-файле у меня есть :

 <select name="family" id="family">
<option value="">--all--</option>
@foreach ($families as $family)
    <option value="{{ $family->id }}">{{ $family->name }}</option>
@endforeach</select>
 

По крайней мере, мой компонент называется так :

 @component('components.select-family')  
 

У меня такая ошибка :

Неопределенная переменная: семейства

Я много чего перепробовал, но безуспешно.

Ответ №1:

Вы должны объявить общедоступный параметр в классе component, и он будет автоматически введен в блейд.

 public $families;

public function __construct()
{   
    $this->families = Family::all();
}

public function render()
{   
    return view('components.select-family');
}
 

УВЕДОМЛЕНИЕ:

Если вы развернули на общем хосте, и он выдает ту же ошибку, введите свои компоненты в register() метод AppServiceProvider или введите автономного поставщика для этой цели.

Пользовательское введение

 public function register()
{
    IlluminateSupportFacadesBlade::component(Component::class, 'component-name');
}