Как получить данные из маршрута прямо в шаблоне без ajax?

В Laravel есть несколько способов передачи данных из маршрута в шаблон без использования AJAX. Рассмотрим один из них - использование компонентов шаблонов.

1. Создайте класс компонента шаблона:

namespace AppViewComponents;

use IlluminateViewComponent;

class ExampleComponent extends Component
{
    public $data;

    /**
     * Создание нового экземпляра компонента.
     *
     * @param  mixed  $data
     * @return void
     */
    public function __construct($data)
    {
        $this->data = $data;
    }

    /**
     * Получить представление, которое должно быть отрендерено компонентом.
     *
     * @return IlluminateContractsViewView|string
     */
    public function render()
    {
        return view('components.example-component');
    }
}

2. Создайте представление компонента в resources/views/components/example-component.blade.php. Вы можете использовать переменные из вашего маршрута, передавая их в конструкторе компонента:

<div>
    <!-- Используйте переменные из маршрута -->
    <h1>{{ $data }}</h1>
</div>

3. В вашем контроллере передайте данные в представление компонента:

use AppViewComponentsExampleComponent;

// ...

public function index()
{
    $data = 'Привет из маршрута!';

    return view('your.view', [
        'exampleComponent' => new ExampleComponent($data),
    ]);
}

4. В вашем представлении your.view.blade.php подключите компонент:

<x-example-component :data="$exampleComponent->data" />

Теперь в шаблоне example-component.blade.php вы можете использовать переданные данные из маршрута.

Вот как можно получить данные из маршрута прямо в шаблоне, не используя AJAX, в Laravel с помощью компонентов шаблонов. Вы также можете использовать другие методы, такие как использование View::share() или передача данных через compact(), но использование компонентов шаблонов предоставляет более явный и структурированный подход к передаче данных из маршрута до шаблона.