Ergebnis 1 bis 12 von 12

Thema: Contao -Datenexport über JSON Schittstelle

  1. #1
    Contao-Nutzer
    Registriert seit
    30.05.2011.
    Ort
    Köln
    Beiträge
    88

    Standard Contao -Datenexport über JSON Schittstelle

    Hallo Zusammen,

    ich möchte aus der tl_page-Tabelle einzelne Informationen über eine Schnittstelle als JSON ausgeben.
    Ich verwende Contao 4.4.3 und möchte bei Aufruf meiner Erweiterung http://www.tolledomain.de/system/mod...getContent.php das JSON ausgegeben. Wie kann ich die Contao-Klassen nutzen?
    Code:
    require('system/initialize.php');
    funktioniert leider nicht.

    Gruß aus Köln Mike

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

    Standard

    Würde eventuell funktionieren wenn der Pfad zur Datei richtig wäre.
    Code:
    require('../../../system/initialize.php');
    oder noch weiter runter, hab grad nicht gezählt.
    Oder wie schon oft gesehen, suchen lassen:

    Code:
    /**
     * Initialize the system
     */
    define('TL_MODE', 'FE');
    $dir = __DIR__;
    while ($dir != '.' && $dir != '/' && !is_file($dir . '/system/initialize.php'))
    {
        $dir = dirname($dir);
    }
    if (!is_file($dir . '/system/initialize.php'))
    {
        throw new \ErrorException('Could not find initialize.php!',2,1,basename(__FILE__),__LINE__);
    }
    require($dir . '/system/initialize.php');
    Aber in Contao 4 würde ich das über ein Routing machen. Gerade wenn man das aus dem Backend machen will oder im Frontend als angemeldeter Besucher, habe ich da mit dem initialize.php Aufruf Probleme bekommen das der Loginstatus ab und zu nicht erkannt wurde.
    Geändert von BugBuster (24.08.2017 um 12:07 Uhr) Grund: typos
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  3. #3
    Contao-Nutzer
    Registriert seit
    30.05.2011.
    Ort
    Köln
    Beiträge
    88

    Standard

    Hi,

    ich möchte das über das Frontend machen ohne eine Abfrage Benutzer o.a., die Daten sollen von einer App eingelesen werden. GGF wird noch ein GET- oder POST-Parameter abgefragt.

    Beim Aufruf bekomm ich jetzt eine Fehler "Your script is not compatible with Contao 4.":

    Code:
    /**
     * Initialize the system
     */
    define('TL_MODE', 'FE');
    $dir = __DIR__;
    while ($dir != '.' && $dir != '/' && !is_file($dir . '/system/initialize.php'))
    {
        $dir = dirname($dir);
    }
    if (!is_file($dir . '/system/initialize.php'))
    {
        throw new \ErrorException('Could not find initialize.php!',2,1,basename(__FILE__),__LINE__);
    }
    require($dir . '/system/initialize.php');
    
    class getContent extends \Frontend {
    	  // Konstruktor
    	public function __construct()
    	{
    		// call the constructor from Frontend
    		parent::__construct();
    	}
    	
    	 public function run() {
        	  // Datenbankabfragen und Rückgabe des JSON
    	  
    	}
    	
    }
    Geändert von cmike (24.08.2017 um 12:35 Uhr)

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

    Standard

    Jo, steht so in der Datei drin:
    Code:
    if (!defined('TL_SCRIPT')) {
        die('Your script is not compatible with Contao 4.');
    }
    Deine Klasse muss in diesem Umfeld eine Konstante TL_SCRIPT haben. Kann mich erinnern, dass ich damit auch Problem hatte und in der Folge damit.
    Wobei TL_SCRIPT deprecated ist, wird nicht mehr unterstützt in Contao 5. (noch weit weit wech...)
    Also gleich als erstes:
    Code:
    // Set the script name
    define('TL_SCRIPT', 'system/modules/mymod/classes/getContent.php');
    dann weiter mit initialize Suche und deiner Klasse.
    Geändert von BugBuster (24.08.2017 um 12:41 Uhr) Grund: typo
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  5. #5
    Contao-Nutzer
    Registriert seit
    30.05.2011.
    Ort
    Köln
    Beiträge
    88

    Daumen hoch

    Danke,

    das hat erstmal geholfen, ich mach dann mal weiter.

    Gruß Mike

  6. #6
    Contao-Nutzer
    Registriert seit
    30.05.2011.
    Ort
    Köln
    Beiträge
    88

    Frage

    Hallo nochmal,

    das funktioniert jetzt, wie wäre denn das Vorgehen, um es auch für Contao 5.x kompatibel zu machen?

    Gruß Mike

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

    Standard

    Da müsstest du ein Contao Bundle programmieren, mit Routing, Controller, Dependency Injection, ..., sprich ohne dem Framework von Contao. So die Theorie. Dazu muss bis dahin Contao selber auch komplett auf Symfony umgestellt sein.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

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

    Standard

    Das kannst du natürlich schon jetzt tun. Ich selber mach noch ein Mischmasch, ich benutze schon Routing, der Controller holt sich aber das Conto Framework und arbeite dann mit den Contao Klassen weiter.
    Und wenn ich begriffen habe wie, stelle ich das Stück für Stück um.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  9. #9
    Contao-Nutzer
    Registriert seit
    30.05.2011.
    Ort
    Köln
    Beiträge
    88

    Computer

    Ok,

    ich werde mal sehn, bis dahin gibt es ja ggf. noch ein paar Tutorials wie man das richtig macht.

    Danke für deine Hilfe!

  10. #10
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Dazu muss bis dahin Contao selber auch komplett auf Symfony umgestellt sein.
    Das stimmt nicht. Du kannst schon lange eigene Routen komplett nutzen, mache ich schon seit der 4.0 Also du könntest einfach z.B. domain.de/api als Route registrieren, musst nur schauen, dass sie vor der Catch-All von Contao kommt, aber wenn du die ME nutzt, passiert auch das automatisch. Sogar mit Annotations kannst du arbeiten, alles ganz normales Symfony.

    In meiner Bynder-Integration habe ich z.B. auch einen eigenen API-Endpoint gebaut, da kann man sich evtl. was abschauen:

    * Das Manager Plugin, das die routing.yml lädt: https://github.com/terminal42/contao...Plugin.php#L51
    * Die routing.yml, welche Annotations für das Controller-Directory wünscht: https://github.com/terminal42/contao...ig/routing.yml
    * Der ApiController mit Route-Annotations (sogar automatisch dank dem Scope auf Authenfizierung geschützt): https://github.com/terminal42/contao...roller.php#L22

    Bis auf das Manager Plugin und den Scope ist alles reine Symfony-Logik. Also wer Symfony versteht, sollte auch fix eigene Routen nutzen können
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

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

    Standard

    Ja Routen nehme ich auch schon, aber es ging darum was man tun müsste um Contao 5.0 kompatibel zu werden.
    Die spannende Frage ist, wie weit Contao 5 da gehen will, ob "nur" die system/modules Unterstützung wegfällt oder auch der ganze andere Kram wie DCA & Co.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  12. #12
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Das schauen wir dann 2050, wenn Contao 5 ein Thema wird :P
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

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
  •