2016-05-11 4 views
1

Dies ist eine Erweiterung von einem Beitrag habe ich vor ein paar Tagen gemacht: Change a page without refreshing - Laravel/AjaxÜberprüfen Sie, ob eine Seite über Ajax in Laravel genannt wird

Grundsätzlich Ich versuche, die URL-Struktur von Soundcloud zu replizieren, wo Sie Wenn Sie auf einen Link klicken, wird der Inhalt geladen, ohne die Seite zu aktualisieren. Wenn Sie jedoch direkt auf dieser Seite landen, wird das Design nicht repliziert und es bricht effektiv.

Ich habe nach Möglichkeiten gefragt, wie ich in Laravel einchecken kann, wenn die Seite über Ajax angefordert wird oder ohne einen Ajax-Anruf gelandet ist.

Momentan passiert Folgendes: Wenn ich die Seite aufruft, hat die Ansicht eine Mastervorlage, die so erweitert wurde, dass doppelte Mastervorlagen auf der einen Ansicht erstellt werden.

Ich denke, ob ich

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

so etwas wie getan würde es funktionieren, aber versucht und kein Glück.

Jede Hilfe wie immer wird sehr geschätzt!

Dank

+0

können Sie den vollständigen Ansichtscode anzeigen? –

Antwort

1

Sieht aus wie @extends Richtlinie immer noch ausgeführt wird, in falsy if

Sie ein leeres Layout hinzufügen und führen Sie wie folgt überprüfen:

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

und Sie brauchen nur diese in das Layout hinzufügen empty.blade.php :

@yield('content') 

oder können Sie Ajax-Check in der Master-Layout

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

Hallo Grins das ist genial danke! Funktioniert und genau wie ich es brauche! Viel Liebe! –

1

Sie können das in Ihrer Controller-Aktion überprüfen.

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

Danke für alle Antworten hinzufügen, ich dieses Problem behoben schließlich bekam von @if(!Request::ajax()) auf Abschnitt verwenden, die nicht gezeigt werden mussten, wenn die Seite geladen wurde über Ajax.

Nochmals vielen Dank! : D

Verwandte Themen