Laravel и PJAX

Я не могу заставить Pjax работать с Laravel. Я перепробовал все, но лезвие шаблонов все испортило. Когда я не использую лезвие, я могу заставить его работать.

В результате происходит загрузка страницы AJAX, а затем, к сожалению, происходит перенаправление на тот же URL-адрес. Так что страница загружается дважды.

Я понятия не имею, как модифицировать шаблонизатор лезвий, чтобы приспособить его к Pjax и подавить загрузку второй страницы. У кого-нибудь есть какие-нибудь подсказки?

0

Решение

Как вы расширяете свои макеты? Для правильной работы PJAX вам необходимы два макета — один со всеми вашими сценариями и так далее, а другой просто отображает запрашиваемое представление.

приложение / Провайдеры / AppServiceProvider.php

public function boot() {
view()->share('layout', 'layouts.main');
}

Приложение / Промежуточный / PjaxCheck.php

public function handle($request, Closure $next)
{
if ($request->pjax())
{
view()->share('layout', 'layouts.pjax');
}

return $next($request);
}

(не забудьте добавить это к вашему Kernel)

ресурсы / виды / макеты / main.blade.php

<html>
<body>
@yield('content')
</body>
</html>

ресурсы / виды / макеты / pjax.blade.php

@yield('content')

Посмотреть

@extends($layout)
@section('content')
Some html content
@endsection

По существу в AppServiceProvider Вы говорите, каждый взгляд, что $layout вар должен по умолчанию layouts.main, В промежуточном программном обеспечении Pjax вы перезаписываете эту переменную layouts.pjax вместо.

2

Другие решения

Оригинальный постер здесь. Эта проблема с множественной загрузкой вызвана медленной Homestead / vagrant. Если вы установите timeout опция на PJAX для 3500 (мс), тогда вы не столкнетесь с этой проблемой.

А для тех, кто обеспокоен тем, что 3,5-секундная загрузка страницы медленная и делает PJAX бесполезной, обратите внимание, что на производственном сервере, даже в микростанциях EC2, время загрузки вашего приложения Laravel будет в 10 раз меньше, чем в Vagrant, поэтому вы будете в 350мс диапазона и не будет проблем с использованием PJAX по умолчанию 650мс таймаут

1

По вопросам рекламы [email protected]