Есть такой класс компонента:
<?php
namespace App\Application\Components;
use Closure;
use Illuminate\View\Component;
use Illuminate\Support\Facades\View;
use Illuminate\Http\Request;
class Navigation extends Component
{
public function __construct(private Request $request) {}
/**
* Get the view / contents that represent the component.
*/
public function render(): \Illuminate\View\View
{
return View::make('admin::components.navigation', [
'routes' => $this->registerRoutes()
]);
}
private function registerRoutes(): array
{
return [
[
'name' => 'messages.admin.statistics.index',
'active' => $this->isActiveRoute('admin.statistics.index'),
'path' => route('admin.statistics.index'),
],
[
'name' => 'messages.admin.user.index',
'active' => $this->isActiveRoute('admin.user.index'),
'path' => route('admin.user.index'),
],
/* ... */
];
}
private function isActiveRoute(string $path): bool
{
return $this->request->routeIs($path);
}
}
Но
admin::components.navigation
не видит переменную
$routes
. Еще пробовал так, но тоже дохлый номер:
return Blade::render('components.navigation ', [
'routes' => $this->registerRoutes()
]);
Хотя во вьхах содержимое компонента
<x-admin::navigation />
без проблем отображается, единственное, не видит передаваемые переменные из метода
render()
. Структура DDD'шная, поэтому путь к фолдеру у компонентов отличается от обычного. Мне кажется, что с этим связано, но точно не уверен.