Ergebnis 1 bis 11 von 11

Thema: Ausgabe Controller als Response

  1. #1
    Contao-Nutzer
    Registriert seit
    15.11.2018.
    Beiträge
    5

    Standard Ausgabe Controller als Response

    Hallo, ich bin neu hier in der Community und habe direkt eine für mich unlösbare Frage.

    Ich versuche einen Seite direkt im Controller als Response zurück zu geben.
    Ich möchte den Inhalt aus der Datenbank anzeigen der nicht auf einem Modul oder Content Element basiert.
    Den Inhalt aus der selbst erstellten Tabelle bekomme ich im eigenen Template ausgegeben, nicht aber das "drum herum"

    Ist das überhaupt möglich?

    Ich arbeite im Contao 4.4.24.

    Wäre für jeden Tipp oder Trick dankbar.

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

    Standard

    Wenn es eine vollständig Seite sein soll, dann ginge das in etwa so:
    https://github.com/BugBuster1701/con...er.php#L22-L39
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  3. #3
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.942

    Standard

    Wenn Du das "drum herum" von Contao von Contao haben willst, also das, was sich im Contao Backend konfigurieren lässt, dann solltest Du m.E. auch Contao nutzen: Baue ein Modul oder Content Element, das die Daten aus Deiner Tabelle abfragt und ausgibt. Den Rumpf dafür hast Du ja anscheinend bereits.

    Oder Du lässt Contao (weitestgehend) außen vor und gibst in deinem Template Diene Daten aus. Das umgebende "<html><head>...</head><body> ...</body></html>" kannst Du ja auch in Dein Template packen. Das wäre aus meiner Sicht aber eher etwas für Responses, die nicht im klassischen Sinn Teil der Seiten des CMS sind (eher etwas wie z.B. ein Response auf einen Ajax-Request o.Ä.).

    Edit: vielleicht hilft Di ja die Möglichkeit, Deinen Code via {{file:meincode.php}} einzubinden? Siehe https://docs.contao.org/books/manual...clude-elements (das hat dann aber nichts mehr mit Deinem Controller zu tun).
    Geändert von fiedsch (16.11.2018 um 06:11 Uhr)
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  4. #4
    Contao-Nutzer
    Registriert seit
    15.11.2018.
    Beiträge
    5

    Standard

    Zitat Zitat von BugBuster Beitrag anzeigen
    Wenn es eine vollständig Seite sein soll, dann ginge das in etwa so:
    https://github.com/BugBuster1701/con...er.php#L22-L39
    Hallo BugBuster,
    vielen Dank für die schnelle Antwort.
    Das geht schon mal in die Richtung, die ich mir vorstelle... Wenn ich das richtig sehe baust du in dem Template die Seite komplett auf.
    Ich bräuchte einen Weg, das ganze drum herum, also <head>, <body> usw dass mir das Contao schon vorgibt und ich nur den Content mit
    meinem Inhalt füllen kann/muss. Ähnlich wie Contao das schon von Haus aus kann ...

    Danke!

  5. #5
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.942

    Standard

    Zitat Zitat von renee.stein Beitrag anzeigen
    Wenn ich das richtig sehe baust du in dem Template die Seite komplett auf.
    Nein, BugBuster verwendet hier gar kein Template. Er schreibt den HTML-Code inline in die Variable $strBuffer und gibt diese dann im Response aus.

    Ich bräuchte einen Weg, das ganze drum herum, also <head>, <body> usw dass mir das Contao schon vorgibt und ich nur den Content mit
    meinem Inhalt füllen kann/muss. Ähnlich wie Contao das schon von Haus aus kann ...
    Der Weg dazu ist m.E.: schreibe ein Contao-Modul oder Content Element. Ansonsten würdest Du in Deinem Controller "Contao nachbauen".

    Wieso willst Du das überhaupt unbedingt in einem Controller machen?
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  6. #6
    Contao-Nutzer
    Registriert seit
    15.11.2018.
    Beiträge
    5

    Standard

    Zitat Zitat von fiedsch Beitrag anzeigen
    Nein, BugBuster verwendet hier gar kein Template. Er schreibt den HTML-Code inline in die Variable $strBuffer und gibt diese dann im Response aus.



    Der Weg dazu ist m.E.: schreibe ein Contao-Modul oder Content Element. Ansonsten würdest Du in Deinem Controller "Contao nachbauen".

    Wieso willst Du das überhaupt unbedingt in einem Controller machen?

    Hallo,

    das was BugBuster hier macht, kommt dem ja schon nahe, was ich brauche. Das Problem hier ist aber, dass er das HTML an sich baut - ich möchte aber, dass mich hier Contao unterstützt.

    Ich versuche einen Katalog zu erstellen. Die einzelnen Elemente werden bei mir im Backend angelegt, im "Artikel" via Modul ausgegeben.
    Jetzt zu meinem Problem...

    Im Frontend: Beim Klick auf ein Katalog-Element möchte, dass sich eine neue Seite öffnet.

    Die URL wird wunderbar geschrieben, den Inhalt bekomme ich auch ausgelesen, inkl meta-Daten usw. Was ich aber nicht hinbekomme ist, dass diese Seite das "Contao-Layout" bekommt.
    Sprich: alles, dass was mach in den Themes einstellen kann. So, als wäre das eine normale Contao...

    Könnte ihr mir helfen?

  7. #7
    Community-Moderatorin & Contao-Urgestein Avatar von mlweb
    Registriert seit
    10.07.2011.
    Beiträge
    6.742
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Und warum verwendest Du dafür keine fertige Erweiterung?
    Catalog Manager zum Beispiel, je nach dem was für Anforderungen Du noch hast MetaModels oder auch ein umgebautes Newsmodul (Core).

    Nachtrag: Isotope kann man dafür sicher auch verwenden.
    Ich habe Dir mit meinen Hinweisen geholfen und Du möchtest Dich bedanken?
    Unterstütze bitte das Contao-Projekt (Button Links)
    Weitere Spendenmöglichkeiten
    ------------------------------------------------------------------------------------------------------
    Contao-Dokumentation: Contao-Handbuch und Contao-Entwickler-Doku
    Contao-Online-Video-Kurse: Contao Academy
    Funktionalität erweitern: Contao-Erweiterungen

    Für Dinge die man mit html5 und css3 lösen kann, braucht man kein javascript.




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

    Standard

    Man kann den Controller auch rendern lassen:
    https://github.com/BugBuster1701/con...Controller.php

    Das Tempate erweitert, hier im Backend, das normale be_page.html.twig Template.

    Sowas geht bestimmt auch fürs Frontend.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  9. #9
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.942

    Standard

    Zitat Zitat von renee.stein Beitrag anzeigen
    Ich versuche einen Katalog zu erstellen. Die einzelnen Elemente werden bei mir im Backend angelegt, im "Artikel" via Modul ausgegeben.
    Jetzt zu meinem Problem...

    Im Frontend: Beim Klick auf ein Katalog-Element möchte, dass sich eine neue Seite öffnet.
    Ich bleibe bei dem was ich sage -- unterstützt von der Aussage von mlweb:

    Du willst Frontendmodule programmieren:

    • Eine Produktliste (hast Du wohl schon)
    • Einen Produktreader (das wäre die neue Seite, die aufgeht, wenn Du in der Liste auf die URL eines Produkts klickst


    Ob Du das nun selbst programmierst, oder eine fertige Erweiterung verwendest ändert nicht viel daran. Du verwendest zwei Module: Liste und Reader. So macht das Contao an etlichen Stellen (News, Events, ...).

    Edit: fix typo
    Geändert von fiedsch (16.11.2018 um 17:50 Uhr)
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

  10. #10
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.063
    Partner-ID
    10107

    Standard

    Für das Frontend ist es leider nicht so trivial wie für das Backend. Um eine reguläre Contao Frontend Seite rendern zu können brauchst du allerhand zusätzliche Informationen:

    • Ein PageModel.
    • Ein Layout für die Page.
    • Module im Layout.
    • Assets im Layout, etc.
    • Artikel in der Page.
    • Inhaltselemente in den Artikeln.


    Du könntest in deiner Controller Action aber eine beliebige, schon existierende Seite rendern lassen:
    PHP-Code:
    $page = \Contao\PageModel::findById();
    $frontend = new \Contao\FrontendIndex();
    return 
    $frontend->renderPage($page); 
    Nur ist es vermutlich nicht so sinnvoll.


    Seit Contao 4.5 kannst du Module und Inhaltselemente als Controller umsetzen, falls dir das für deinen Fall hilft.
    Geändert von Spooky (17.11.2018 um 12:37 Uhr)

  11. #11
    Contao-Nutzer
    Registriert seit
    21.01.2020.
    Beiträge
    44

    Standard

    gibt es hier noch ein Controller der GET Parameter als Werte übernimmt?

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
  •