2016-05-11 3 views
1

Это расширение с поста я сделал несколько дней назад: Change a page without refreshing - Laravel/AjaxПроверьте, чтобы увидеть, если страница вызывается через Ajax в Laravel

В принципе, я пытаюсь повторить URL Структура Soundcloud, где вы можете нажмите ссылку, он загрузит контент, не обновляя страницу, однако, если вы приземлитесь прямо на эту страницу, он не будет реплицировать дизайн и эффектный перерыв.

Я думал о том, как я могу проверить в Laravel, если страница запрашивается через Ajax или была приземлена без вызова Ajax.

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

Я думаю, если я сделал что-то вроде

@if(!Request::ajax()) 
@extends('masterlayout') 
@endif 

Это будет работать, но испытанный и не повезло.

Любая помощь, как всегда, ценится!

Thanks

+0

Вы можете показать полный код просмотра? –

ответ

1

Похоже @extends директива всегда выполняется даже в falsy if

Вы можете добавить пустой макет и выполнять проверки, как это:

@extends(Request::ajax()? 'layouts.empty' : 'layouts.master') 

и вам нужно только добавить это в макете empty.blade.php :

@yield('content') 

или вы можете добавить АЯКС проверки в основном макете

@if(!Request::ajax()) 
// all layout code 
@else 
    @yield('content') 
@endif 
+0

Привет, Grin, это блестяще спасибо! Делает удовольствие и точно, как мне это нужно! Большая любовь! –

1

Вы можете проверить это в действии вашего контроллера.

public function index(Request $request) 
{ 
    if($request->ajax()){ 
     return "This is an AJAX call!"; 
    } 
    return "Not an AJAX call..."; 
} 
0

Спасибо за ответы на все вопросы, я в конце концов получил это фиксируется с помощью @if(!Request::ajax()) в разделе, которые не должны быть показано, когда страница была загружена через ajax.

Еще раз спасибо! : D

Смежные вопросы