Laravel новичку
php artisan make:component CategoryList<?php
namespace App\View\Components;
use Illuminate\View\Component;
use App\Models\Category; // Импортируем модель Category
class CategoryList extends Component
{
/**
* Массив категорий, который будет передан в компонент.
*
* @var \Illuminate\Database\Eloquent\Collection
*/
public $categories;
/**
* Create a new component instance.
*
* @return void
*/
public function __construct()
{
// Получаем все категории из модели
$this->categories = Category::all();
}
/**
* Get the view / contents of the component.
*
* @return \Illuminate\Contracts\View\View|\Closure|string
*/
public function render()
{
// Передаём массив $categories в представление компонента
return view('components.category-list', ['categories' => $this->categories]);
}
}<div>
<h2>Список категорий:</h2>
@if ($categories->count())
<ul>
@foreach ($categories as $category)
<li>{{ $category->name }}</li> {# Предполагая, что у вашей модели Category есть поле 'name' #}
@endforeach
</ul>
@else
<p>Категорий пока нет.</p>
@endif
</div><x-category-list :categories="$categories" />В Laravel 12, когда речь заходит о "классовых компонентах", скорее всего, вы имеете в виду Blade Components. Они позволяют создавать часто используемые части вашего пользовательского интерфейса.
Вот как создать классовый Blade Component в Laravel 12 и передать в него массив из модели.
1. Создаем классовый компонент и Blade представление компонента
php artisan make:component CategoryList<?php
namespace App\View\Components;
use Illuminate\View\Component;
use App\Models\Category; // Импортируем модель Category
class CategoryList extends Component
{
/**
* Массив категорий, который будет передан в компонент.
*
* @var \Illuminate\Database\Eloquent\Collection
*/
public $categories;
/**
* Create a new component instance.
*
* @return void
*/
public function __construct()
{
// Получаем все категории из модели
$this->categories = Category::all();
}
/**
* Get the view / contents of the component.
*
* @return \Illuminate\Contracts\View\View|\Closure|string
*/
public function render()
{
// Передаём массив $categories в представление компонента
return view('components.category-list', ['categories' => $this->categories]);
}
}<div>
<h2>Список категорий:</h2>
@if ($categories->count())
<ul>
@foreach ($categories as $category)
<li>{{ $category->name }}</li> {# Предполагая, что у вашей модели Category есть поле 'name' #}
@endforeach
</ul>
@else
<p>Категорий пока нет.</p>
@endif
</div><x-category-list :categories="$categories" />