Laravel Компоненты Nova Blade - ввод данных из динамических c компонентов (без использования JavaScript)? - PullRequest
0 голосов
/ 15 января 2020

Я использую Laravel Nova (с Laravel 6.x) и динамически генерирую страницы с помощью «Компонентов Blade» в течение JSON. Я пытаюсь динамически загружать представления блейдов, с которыми связаны запросы.

Обычно с помощью Laravel контроллеров вы предоставляете методы запросов и возвращаете представление с включенными данными:

return view('my-cool-view', [
            'myData' => $data
        ]);

Я использую Laravel Nova и генерирую просмотры страниц по связанному URI:

routes.php:

// Catch-all for routes; Ignores Nova routes
Route::get('/{uri?}', 'PageController@index')
    ->where('uri', '^(?!nova|manage.*$).*')

PageController.php:

public function index(Request $request)
    {
        return view('page', [
            'page' => Page::where('slug', Str::before($request->getRequestUri(), '?'))
                ->where('active', true)
                ->firstOrFail(),
        ]);
    }

Внутри каждого Page у меня есть JSON с пометкой content, в котором находится содержимое страницы и связанные виды блейдов. Чтобы дать вам лучшее представление о content в Новой:

enter image description here

enter image description here

In В блейд-представлении страницы я зацикливаю каждое содержимое и отображаю связанный «блейд-компонент»:

    @if (! empty($page->content))
        @foreach ($page->content as $content)
            @includeIf('components.'. $content['layout'], $content)
        @endforeach
    @endif

Однако, скажем, у меня есть компонент news, который загружает последние статьи. news это его собственная модель и методы контроллера. Мне нужно, чтобы они были включены в компонент "Blade". Очевидно, что я мог бы написать JavaScript для извлечения данных, но я пытаюсь остаться в пределах лезвия.

Есть ли способ вставить скажем News::get(); в представление компонента "новости" блейд без явной записи что-то ужасное, например {{ $news = News::get(); }} в блейд-файле или использование JavaScript? В идеале, я хотел бы, чтобы это вытащило из связанной NewsController и обрабатывало нумерацию страниц, et c.

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...