-
Zugriff auf Contao
Hallo,
ich möchte von einem eignen Script auf die Datenbank-Klasse von Contao zugreifen.
Versucht habe ich es folgendermaßen:
define('TL_MODE', 'FE');
require_once('../../system/initialize.php');
$this->import('Database');
aber da erhalte ich den Fehler:
Fatal error: Using $this when not in object context
Eigenartigerweise funktioniert aber der Zugriff auf eine andere Resource von Contao:
$objFile = \FilesModel::findByPath($copyFile);
$objFile = \Dbafs::addResource($copyFile);
das kann ich im gleichen Script ausführen.
Danke für Hinweise
Mark
-
Hi,
das liegt daran, dass du, um $this verwenden zu können diese nur innerhalb einer Klasse nutzen kannst.
Richtig wäre also
PHP-Code:
<?php
define('TL_MODE', 'FE');
require_once('../../system/initialize.php');
class myClass extends System
{
public function __construct()
{
parent::__construct();
$this->import("Database");
}
}
new myClass();
ODER du nutzt auch bei der Datenbank die statische Methode
PHP-Code:
<?php
define('TL_MODE', 'FE');
require_once('../../system/initialize.php');
Database::getInstance()->
Aber $this bezieht sich ja immer auf das aktuelle objekt, also kannst du es nur innerhalb eines Objektes nutzen, was du in deiner Angabe nicht gemacht hast.
Edit: @BugBuster :D :cool:
-
Ersteres ist klar, du willst auf ein Objekt zugreifen und bist aber gar nicht in dem Umfeld.
Wenn du nach der initialize eine Klasse definierst die beispielsweise von Frontend erbt und im contructor dann die import Zeile machst, sollte es gehen.
das Zweite Beispiel ist auch klar, da du dort auf statische Klassen/Methoden zugreifst, das geht dadurch direkt.
Edit: zu langsam :-)
-
Hi, Welche Contao Version nimmst du?
in der 3. hat sich ziemlich vieles geändert, wenn du dein script über Autoload lädst (Contao Erweiterung) brauchst du initialize nicht.
sonst versuch das so.
PHP-Code:
$dbO = Database::getInstance();
Hier sind auch einige Infos über Änderungen in C3
http://www.contao.glen-langer.de/sta...-contao-3.html