Liebes Forum, ich möchte in einem Plugin auf die Datenbank zugreifen. Die Zugangsdaten sind ja in der config.php im Basisverzeichnis. Nun müsste man ja eigentlich das Basisverzeichnis herausfinden um an diese Datei zu kommen. Das steht aber in der Datenbank. Hihi. Aber man kann auch einfach direkt so einbinden: $db = include(‘config.php’); Dann wird die richtige Datei aus dem Basisverzeichnis eingebunden, shopware nimmt also scheinbar automatisch das rootverzeichnis. Wieso wird nicht aus dem Verzeichnis eingebunden, in dem die Bootstrap.php liegt? Gibt es dafür eine Regel? Ist die Einbindung so ok, oder kann das Probleme machen? Liebe Grüße Kerstin
Hallo Kerstin, aus dem Plugin heraus kommst du über Shopware()->Db() an eine PDO-Verbindung, es gibt eigentlich keinen Grund, die Datei config.php direkt zu includes. lG Daniel
stimmt, das geht. Ist ja auch viel einfacher. Vielen Dank!!! Trotzdem die Frage, warum nicht relativ zum Verzeichnis der Bootstrap.php includet wird. Bzw. wie das geregelt ist. Würde mich echt interessieren - auch wenn ich das hierfür nicht brauche.
Hi, das ist PHP Standard-Verhalten, der Eintrittspunkt der Applikation ist ja die shopware.php im Hauptverzeichnis. Die Bootstrap.php wird ja auch nur irgendwann included. lG Daniel
Hallo Daniel, naja, aber zum Beispiel ‚Unterverzeichnis/abc.php‘ verweist auf das Unterverzeichnis des Verzeichnisses, wo die Bootstrap liegt… Bei einer mysqli-Datenbankanbindung uss man ja Errors abfangen. Ist da bei Shopware()->Db()… auch nötig oder erledigt das shopware? Die Datenbank muss ja existieren, sonst würde shopware gar nicht laufen. Aber man hat evtl. keine Schreibreichte und was ist zum Beispiel, wenn die Tabelle, die man abfragt nicht existiert? LG Kerstin
Hi Kerstin, [quote=“Kerstin83”]Hallo Daniel, naja, aber zum Beispiel ‘Unterverzeichnis/abc.php’ verweist auf das Unterverzeichnis des Verzeichnisses, wo die Bootstrap liegt…[/quote] Kann das Szenario jetzt nicht ganz nachvollziehen, aber ganz allgemein untersucht include halt das Verzeichnis der aufrufenden Datei, das Arbeitsverzeichnis und die include_paths. Die setzen wir teilweise auch explizit, etwa in der autoload.php. Vll. meinst du ja das. [quote=“Kerstin83”]Bei einer mysqli-Datenbankanbindung uss man ja Errors abfangen. Ist da bei Shopware()->Db()… auch nötig oder erledigt das shopware? Die Datenbank muss ja existieren, sonst würde shopware gar nicht laufen. Aber man hat evtl. keine Schreibreichte und was ist zum Beispiel, wenn die Tabelle, die man abfragt nicht existiert?[/quote] SQL-Fehler resultieren in eine Exception, die musst du also ggf. anfangen. Schreibrechte würde ich als Entwickler ebenso voraussetzen, wie das Vorhandensein der elementaren Shopware-Tabellen. lG Daniel