Как лучше всего создать шаблон лезвия laravel с независимыми секциями? - PullRequest
0 голосов
/ 30 мая 2020

Я экспериментировал со структурой шаблонов лезвий, но начинаю предполагать, что мой метод - не лучшая практика. Так что я хотел бы сказать вам об этом, ребята. У меня есть главный шаблон, который содержит строку меню, боковую панель, нижний колонтитул и раздел для контента:

<div class="wrapper ">
    @include('layouts.sidebars')
    <div class="main-panel">
        <div class="main-content"> 
            @include('layouts.navbars')
            @yield('content')
            @include('layouts.footers')
        </div>
    </div>
</div>

На моей странице я расширяю главный макет и помещаю остальное в раздел содержимого. Все идет нормально. Я бы хотел, чтобы сама моя страница состояла из нескольких разделов, таких как список заказов, список просмотренных элементов, ... так что в основном ряд полезных блоков, которые можно обновлять независимо, не обновляя всю страницу.

Прямо сейчас я использовал ajax для обработки всех обновлений, поэтому на моей странице есть

<div id="orders"></div>
<div id="viewed-items"></div>
...

, которые заполняются в document.ready () с помощью этой функции:

$.fn.loadOrders = function(){
    $.ajax({
        url: '/orders/{{ $user->id }}',
        type: 'post',
        data: {
            _token: "{{ csrf_token() }}",
        },
        success: function(data){
            if(data.success == true) {
               $("#orders").html(data.html);
            }
        }
    });
}

Каждый раз, когда пользователь просматривает другой элемент, я просто снова запускаю эту функцию, чтобы перезагрузить указанный c div. Эта функция ajax получает необработанный html контент из представления и загружает его в правый div.

Я не очень доволен этим, потому что у меня такое чувство, что должен быть более чистый способ чтобы выполнить sh это и добавить структуру на эту страницу.

Я читал, что laravel имеет метод renderSections (), который позволяет вам перезагрузить определенный раздел c. Поскольку кажется, что этот метод был бы ответом на мой вопрос, я начал думать о разделении моей страницы на разные разделы, но это меня запутало.

При расширении макета вы в основном говорите: возьмите эту страницу и поместите это в том разделе главного макета, я понял. Но в этом случае, я думаю, я хочу сказать: возьмите эту страницу и «наполните» ее разделом для заказов, разделом для просмотренных товаров ... Так что в основном наоборот.

Логичный выбор импортирует все отдельные представления, поэтому моя страница выглядит так:

@extends('master');
@include('orders');
@include('viewed-items');

Очевидно, это работает, но также возвращает меня к root этого вопроса. Есть ли лучший способ перезагрузить эти блоки c вместо использования ajax для вставки содержимого представления в div? Я думал, что метод renderSections () будет решением, но поскольку я просто импортирую эти блоки, у меня действительно нет разделов? Заранее спасибо, я очень надеюсь, что кто-то может указать мне правильное направление.

...