Ergebnis 1 bis 4 von 4

Thema: Zugriff auf Contao

  1. #1
    Alter Contao-Hase
    Registriert seit
    28.09.2010.
    Beiträge
    1.368

    Standard 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

  2. #2
    Contao-Urgestein Avatar von the_scrat
    Registriert seit
    24.02.2010.
    Ort
    Augsburg
    Beiträge
    2.051
    User beschenken
    Wunschliste

    Standard

    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
    Geändert von the_scrat (31.07.2014 um 09:56 Uhr)
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

  3. #3
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.518
    User beschenken
    Wunschliste

    Standard

    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 :-)
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  4. #4
    Contao-Nutzer
    Registriert seit
    28.07.2009.
    Ort
    Eisenach
    Beiträge
    137

    Standard

    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
    Geändert von bruc13 (31.07.2014 um 10:45 Uhr)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •