2016-08-11 5 views
0

Ich habe eine Seite, wo ich alle meine Kunden anzeigen. Es verwendet paginate und zeigt nur 16 Clients pro Seite an. Als solches habe ich die Echtzeitsuchfunktionalität zur Verfügung gestellt.Ergebnis der Suche in der Ansicht anzeigen

Wenn eine Suche ist ausführen, die Option aus den Ergebnissen ausgewählt löst die folgenden

select: function (event, ui) { 
    $.ajax({ 
     url: "/returnClient", 
     type: "GET", 
     datatype: "html", 
     data: { 
      value : ui.item.value 
     }, 
     success: function(data) { 
      $('.container').fadeOut().html(data.html).fadeIn(); 
     } 
    }); 
} 

, die im Wesentlichen die folgende Funktion

public function returnClient(Request $request) 
{ 
    if($request->ajax()){ 
     $selectedClient = $request->input('value'); 
     $client = Client::where('clientName', $selectedClient)->first(); 

     $html = View::make('clients.search', $client)->render(); 
     return Response::json(array('html' => $html)); 
    } 
} 

Wenn ich Ausgang der Client Variable oben ruft, ich sehe alle Details für diesen bestimmten Kunden. Dies wird dann an die partielle clients.search übergeben. Innerhalb clients.search, wenn ich

{{dd($client)}} 

bekomme ich Undefined variable: Client. Warum erhält es das analysierte Objekt nicht in der Ansicht?

Vielen Dank

+0

nicht sicher, ob Sie die API hier wirklich nutzen. Ich denke, ein besserer Weg besteht darin, den HTML-Code innerhalb der Ansicht darzustellen, dann ruft die API den Endpunkt auf und empfängt einige Daten, und diese Daten werden in der Ansicht über Javascript gefüllt. Wenn Sie den vollständigen HTML-Code übergeben, wird die Idee der API zunichte gemacht. –

Antwort

3

Das Problem ist, dass Sie nicht ordnungsgemäß $client der Ansicht sind vorbei. Die Views documentation zeigt, wie Daten ordnungsgemäß über ein assoziatives Array übergeben werden. Die API docs bestätigen, dass ein Array ist, was erwartet wird.

Tun Sie dies statt:

public function returnClient(Request $request) 
{ 
    if($request->ajax()){ 
     $selectedClient = $request->input('value'); 
     $client = Client::where('clientName', $selectedClient)->first(); 

     $html = View::make('clients.search', ['client' => $client])->render(); 
     return Response::json(array('html' => $html)); 
    } 
} 

Auch als ein Punkt der Gewohnheit möchten Sie vielleicht mit dump() statt dd() zu betrachten.

+0

Für andere Informationen: 'dump()' ist die Funktion 'dd()' ruft hinter den Kulissen, so ist es im Wesentlichen die gleiche Sache ohne zu sterben und ohne eine variable Anzahl von Argumenten zu akzeptieren. – samrap

Verwandte Themen