2016-04-26 11 views
1

Ich arbeite an einer Symfony 2 WebApp, die die PayPal Rest API verwendet, um PayPal-Zahlungen zu erstellen und zu akzeptieren.Symfony 2: Wie und wo die Laufzeiteinstellungsdatei gespeichert wird

Um jeden Benutzer auf eine PayPal-Seite in seiner Sprache umleiten zu können, muss ein Experience Profile für jede Sprache/Gebietsschema erstellt werden.

Jede Experience Profile muss nur einmal erstellt werden. Zum Beispiel, wenn ein Profil für US locale erstellen hat, kann dieses Profil wieder verwendet das gleiche Gebietsschema für jeden Kunden werden:

  1. Kunde gibt seine Adresse und contry XY auf meiner Seite
  2. Meine Seite überprüft, ob für XY locale Profil existiert
  3. für XY locale neues Profil erstellen und speichern oder wiederverwenden ein

Jedes Profil hat eine eindeutige ID existiert. So suche ich nach einer Methode zum Speichern von Gebietsschema/ID-Paaren. Eine einfache Lösung wäre eine JSON-Datei. Aber wo diese Datei in der Symfony-Struktur zu speichern?

Profile werden spontan erstellt, wenn ein Benutzer aus einem neuen Land eine Zahlung tätigt. Somit werden diese Daten zur Laufzeit erstellt und gehören deshalb nicht in den Standard config von Symfony. Ich weiß nicht einmal, ob diese Ordner auf meinen Code zugreifen/schreibbar sein sollen.

Also: Was ist der richtige Ort, um eine solche Datei zu speichern.

EDIT: Wie @JimL zeigte in den Kommentaren heraus, es wäre natürlich möglich, die Daten in der DB zu speichern. Allerdings sollte das Zahlungsbündel, an dem ich arbeite, in verschiedenen Projekten verwendet werden und somit so weit wie möglich vom Rest des Projekts getrennt sein.

Ziel ist es, die Daten in eine Datei zu speichern, nicht in der DB. Natürlich ist die DB viel effizienter, aber in diesem speziellen Fall reicht eine einfache Datei aus.

Die Frage ist: Wo diese Datei speichern? Erste Idee ist es, /MyBundle/Resources/config zu verwenden, da dieses Verzeichnis alle anderen Konfigurationsdateien enthält. Aber ist dies der richtige Ort für Dateien, die zur Laufzeit ändern?

+0

Klingen wie Sie es einfach als eine Einheit mit Bezug auf Benutzer hinzufügen könnten. Welches wird dann in db gespeichert – JimL

+0

Nein, das ist nicht der Weg zu gehen. Das Profil ist NICHT mit einem bestimmten Benutzer verknüpft. Alle Benutzer, die "USA" als Land auswählen, verwenden das US-Profil. Wählt der gleiche Benutzer bei seinem nächsten Einkauf "Kanada", sollte er das CA-Profil usw. verwenden. Zusätzlich ist die Zahlungslogik in einem separaten Bundle implementiert, so dass sie in anderen Projekten wiederverwendet werden kann. Ich möchte diese Daten von der DB fernhalten. –

+0

Bundles könnten auch DB-Entities hinzufügen, ich denke immer noch, dass dies in der db sein sollte. Wenn nicht mit dem Benutzer verknüpft, dann mit der Zahlung verknüpft – JimL

Antwort

2

Standard-Symfony Verzeichnisstruktur für 3.x ist:

app/ Die Anwendungskonfiguration, Vorlagen und Übersetzungen.

bin/ Ausführbare Dateien (z. B. bin/console).

src/ Der PHP-Code des Projekts.

Tests/ Automatische Tests (z. B. Komponententests). Standard-Verzeichnisstruktur ist:

var/ Erzeugen Dateien (Cache, Protokolle, etc.).

Hersteller/ Die Abhängigkeiten von Drittanbietern.

web/ Das Webstammverzeichnis.

Sie können es in das Standardverzeichnis var in Ihrem benutzerdefinierten Verzeichnis einfügen. Erinnere dich an Berechtigungen.

Weitere allgemeine Informationen über var-Verzeichnis: http://www.linfo.org/var.html

+0

Ich benutze Symfony 2.8, das nicht das 'var /' dir hat. Stattdessen befinden sich Cache, Protokolle usw. in 'app /'. Ich habe jetzt das 'kernel.cache_dir' in meine PaymentServices injiziert und die Daten dort gespeichert. –

+0

Es ist umstritten. Durch das Löschen des Cache werden Ihre Datenprofile gelöscht. Vielleicht bessere Option ist, den Speicherort aus Benutzerkonfiguration zu greifen. –

Verwandte Themen