2017-02-15 1 views
1

In unserem Legacy-Code, Daten von einem Laravel Controller zur Ansicht für die Verwendung mit Javascript thusly gesendet wird:Passing JSON von Laravel 5.1 Controller zu JS (AngularJS) von Einzel gebrochen ist Zitate

$scope.users = JSON.parse('{!! $users or "{}" !!}'); 

Wie Sie können Stellen Sie sich vor, da die Daten als große JSON-Zeichenfolge in einfache Anführungszeichen eingeschlossen werden, wenn die Daten ein einfaches Anführungszeichen enthalten, bricht sie ab.

Ich werde die Art und Weise, wie wir es tun, renovieren, aber bevor ich mich auf eine solche Aufgabe beginne, wollte ich sehen, welche Methoden oder Best Practices man im Auge behalten möchte und wie andere Leute Daten von Laravel-Controllern einbringen zu Javascript in der Ansicht.

Ich habe andere Dinge ausprobiert wie PHP s addslashes() und htmlentities() verwenden, aber diese scheinen plump und mehr Schritte, dann sollte es wahrscheinlich sein. Wie konvertiert man diese Daten am besten aus Laravel?

+0

Sind Sie mit '$ http' Benutzerliste abzurufen? Wenn dies der Fall ist, wird der JSON automatisch analysiert, den er empfängt (vorausgesetzt, Sie senden ihn mit dem Header "application/json"). –

Antwort

0

Es ist nicht die beste Idee, Daten direkt aus Ihrer Vorlagensprache in eine Javascript-Datei einzufügen. Ein besserer Weg, um Ihre Benutzerdaten in Angular zu laden und zufälligerweise für die Skalierbarkeit im Allgemeinen besser zu sein, besteht darin, sie von einem API-Endpunkt aus zu bedienen. Sie rufen dann die Daten aus der URL, der Sie die Ansicht zugewiesen haben, mit Angulars $http (oder $resource) ab und laden Sie sie in Ihre Steuerung.

angular.module('app').controller(function($http, $scope) { 
    $http.get('/api/v1/users/', function(response) { 
     $scope.users = response.data; 
    }) 
}) 

Wenn Sie jedoch müssen, können Sie die ng-init Direktive verwenden, um Daten zu Ihrem Controller einzufügen (e):

<body ng-controller="exampleCtrl" ng-init="users = {!! $users or "{}" !!}"> 
    <!--- the rest of your html ---> 
</body> 
+0

Toller Rat, aber wie ich in der Frage gesagt habe, stammen die Daten von einem Laravel-Controller. Dort werden die Daten für die Seite manipuliert und aufbereitet und dann mit folgendem Befehl an die View übergeben: 'return View :: make ('user', get_defined_vars());' Also brauche ich wirklich eine Möglichkeit, Daten vom Laravel-Controller zu holen zu Javascript. – SpaceNinja

+0

Ich kenne Laravel nicht zu 100% (nicht einmal 1%), aber ich bin mit Template-Engines im Allgemeinen vertraut: Das Einfügen von Daten in Javascript mithilfe einer Vorlage erfordert Ärger. Es wäre am besten, wenn Sie eine View einrichten, die speziell den benötigten JSON bereitstellt. –

+0

Der Unterschied ist, dass der Laravel-Controller die Daten hat, die ich brauche. Ich weiß, dass ich eine Route in Laravel verwenden kann, um direkt mit Ajax auf den Laravel-Controller zuzugreifen und Daten auf diese Weise zu erhalten, aber das bedeutet eine doppelte Funktion im Laravel-Controller, um die Daten an Ajax zu geben, da es bereits einen Controller gibt, der die Daten bereitstellt wenn Laravel die Seite erstellt und ausliefert. – SpaceNinja

Verwandte Themen