CSV-Export in Laravel 5-Controller

8

Also habe ich eine kleine Ajax-Anfrage an meine reviewsController@export gemacht.

Wenn ich jetzt console.log() der Daten in meiner Erfolgsmethode anzeige, zeigt die Ajax-Antwort die korrekten Daten an. Meine CSV wurde jedoch nicht heruntergeladen. Also habe ich alle richtigen Infos und habe die csv im Wesentlichen erstellt.

Ich denke, das hat möglicherweise damit zu tun, die Header zu setzen?

%Vor%

Gibt es irgendetwas, was ich hier falsch mache, oder hat Laravel etwas dafür zu tun?

    
Matthew Smart 07.09.2015, 14:46
quelle

3 Antworten

13

Probieren Sie diese Version aus - das sollte Ihnen eine schöne Ausgabe mit Response::stream() ermöglichen.

%Vor%

(Angepasst von dieser SO-Antwort: Benutze Laravel zum Herunterladen Tabelle als CSV )

Verwenden Sie einen normalen Link mit target="_blank" , anstatt JavaScript / AJAX zu verwenden. Da es sich um eine Dateidownload-Öffnung in einem neuen Tab handelt, sollte die Benutzererfahrung nicht zu klobig sein.

    
Nerdwood 07.09.2015, 15:18
quelle
1

Dies beantwortet Ihre Frage vielleicht nicht direkt, aber ich verwende zu diesem Zweck ein Paket namens thephleague / csv . ..

Um dieses Paket zu verwenden:

  1. composer benötigt league / csv
  2. Schreiben Sie die folgenden 'use' Anweisungen in Ihren Controller:

    %Vor%

    und alle Modellklassen, die Sie verwenden möchten.

  3. Abstrakte CSV-Erstellung von Code für eine Funktion (in Ihrem Controller), z. B .:

    %Vor%
  4. Erstellen Sie in Ihrem Controller die Funktion get zum Abrufen / Herunterladen von CSV (ersetzen Sie 'MainMeta' durch Ihre eigene Modellklasse):

    %Vor%

    Wenn Sie eine Route erstellen, um diese Funktion aufzurufen, wird eine CSV-Datei Ihrer ausgewählten Modell-Sammlung / Daten in Ihrem Browser heruntergeladen.

  5. Erstellen Sie eine Route in App \ Http \ routes.php wie folgt:

    %Vor%
  6. (Optional) Fügen Sie in einer Blade-Ansichtsdatei (z. B. data.blade.php) einen Link oder eine Schaltfläche ein, damit Sie einfach auf die Download-URL / Route zugreifen können:

    %Vor%

    Wenn Sie auf den Link klicken, wird die CSV-Datei in Ihrem Browser heruntergeladen. In einer Anwendung, die ich codiert habe, bleiben Sie auf der Seite, auf die Sie diesen Link klicken.

Dies hängt natürlich von Ihrer eigenen Anwendung ab. Es gibt so viel mehr, was Sie mit diesem Paket tun können (vollständige Dokumentation finden Sie unter Ссылка ). Das Projekt, in dem ich es verwende, ist Ссылка - Ich habe gerade erst angefangen, es nach ein paar Monaten wieder zu programmieren , also noch ein bisschen Refactoring / Testen / Aufräumen machen:).

    
Rob 24.09.2016 01:44
quelle
1

Versuchen Sie Folgendes:

%Vor%     
Luca C. 21.04.2017 12:33
quelle

Tags und Links