Contao-Camp 2024
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 41 bis 80 von 85

Thema: 4.x.x Modul Entwicklung

  1. #41
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.124

    Standard

    Soweit so gut. Ich wollte jetzt mein DCA fertig machen mit den Sprachdateien:

    Code:
    <?xml version="1.0" ?>
    <xliff version="1.1">
      <file datatype="php" original="src/Resources/contao/languages/en/tl_immobilien.php" target-language="de">
        <body>
          <trans-unit id="tl_immobilien.title.0">
    		<source>Titel/Name</source>
            <target>Titel/Name</target>
          </trans-unit>
    ..
    Im Debug-Modus erhalte ich diesen Fehler:

    Warning: DOMDocument::loadXML(): Entity 'ouml' not defined in Entity, line: 52

    Das ist Zeile 51-53
    Code:
        </body>
      </file>
    </xliff>
    Cache habe ich mehrfach geleert
    Liebe Grüße
    WebRoxx


  2. #42
    Contao-Fan Avatar von Nightwing
    Registriert seit
    29.05.2013.
    Beiträge
    436

    Standard

    Zitat Zitat von WebRoxx Beitrag anzeigen

    Warning: DOMDocument::loadXML(): Entity 'ouml' not defined in Entity, line: 52

    Das ist Zeile 51-53
    Code:
        </body>
      </file>
    </xliff>
    Cache habe ich mehrfach geleert
    So ausm Bauch raus sagt mir mein Gefühl: schau mal zu Beginn, ob da die entsprechenden Entitys drin sind, bzw hast einen öffnenden oder schliessenden vergessen?
    Ist ja im Prinzip wie mit den Klammerpaaren auch.
    Nur so ein Hirnfurz

    ToM

  3. #43
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.124

    Standard

    Zitat Zitat von Nightwing Beitrag anzeigen
    So ausm Bauch raus sagt mir mein Gefühl: schau mal zu Beginn, ob da die entsprechenden Entitys drin sind, bzw hast einen öffnenden oder schliessenden vergessen?
    Ist ja im Prinzip wie mit den Klammerpaaren auch.
    Nur so ein Hirnfurz

    ToM
    Äh das versteh ich null, sorry
    Liebe Grüße
    WebRoxx


  4. #44
    Contao-Urgestein Avatar von folkfreund
    Registriert seit
    09.04.2010.
    Beiträge
    1.928

    Standard

    Zitat Zitat von WebRoxx Beitrag anzeigen
    Warning: DOMDocument::loadXML(): Entity 'ouml' not defined in Entity, line: 52
    Die Fehlermeldung hattest du doch schon vor einer Woche...
    Irgendwo steht offensichtlich in einem Text anstatt eines 'ö' eine HTML-Entity '&ouml;' - obwohl doch eigentlich alles Unicode sein sollte. Aber vielleicht ist es ja auch ene ganz andere Xliff Datei, in der der Fehler drin ist.
    Ist die Fehlermeldung vollständig wiedergegeben?

  5. #45
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.124

    Standard

    Okay das habe ich jetzt hinbekommen.
    PHP-Code:

    /**
     * @FrontendModule(
     *     category="my_cat", 
     *   template="mod_my_frontend_module"
     * )
     */
    class MyFrontendModuleController extends AbstractFrontendModuleController 
    Das Modul in einer eigenen Kategorie anzuzeigen funktioniert so nicht, oder muss man diese auch definieren?
    Liebe Grüße
    WebRoxx


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

    Standard

    template="mod_my_frontend_module" brauchst du nicht, da deine Klasse ja schon so heißt. Das mit der Kategorie sollte funktionieren.

  7. #47
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.124

    Standard

    Mh Irgendwas klemmt da.

    Selbst wenn ich category="application" angebe es bleibt in der Kategorie "miscellaneous"

    Da kann ich auch Cache löschen wie ich will, und Debug-Modus ändert auch nichts.
    Liebe Grüße
    WebRoxx


  8. #48
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.124

    Standard

    So ich habe seltsames beobachtet.

    Und zwar:

    - Ich lösche meine Erweiterung über den den Manager.
    - Er löscht die Erweiterung.
    - Ich lade mein neues ZIP über "Private Pakete" hoch
    - Er installiert meine Erweiiterung

    Jetzt kommt es.

    - Manchmal steht da "Dowloading from Cache"
    - Manchmal lädt er Sie ganz normal hoch, steht da "Downloading"

    Jetzt ist aber das komische das egal was da steht er immer eine Version nimmt die wohl noch irgendwo liegt. Denn Ich habe in einer DCA Datei ein Feld hinzugefügt und unter vender/webroxx/... ist imemr die alte alte DCA Datei drin.

    Ja ich habe wirklich das richtige zip genommen. Scheinbar cached der Manager da etwas zu viel?
    Liebe Grüße
    WebRoxx


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

    Standard

    Wie gesagt, da kann ich dir nicht helfen. Ist es nicht so, dass du im Contao Manager nur Meta Packages hinauflädst?

  10. #50
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.124

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Wie gesagt, da kann ich dir nicht helfen. Ist es nicht so, dass du im Contao Manager nur Meta Packages hinauflädst?
    Mh...

    https://contao.org/de/news/contao-ma...erfuegbar.html

    Meine ist ja dann quasi "privat"

    EDIT: es muss wirklich was mit dem Cache sein, habe das Paket gerade in eine andere Installation hochgeladen da zeigt es die neuen Änderungen an
    Geändert von WebRoxx (03.02.2020 um 19:10 Uhr)
    Liebe Grüße
    WebRoxx


  11. #51
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.124

    Standard

    Morgen,

    wie läuft das denn jetzt in der 4.9 mit der Ausgabe, das Beispiel in der Doku ist klar aber
    PHP-Code:
            if($this->immo_area) {
                
    $arrColumns[]     = 'area=?';
                
    $arrValues[]    = $this->immo_area;
            }

            if(
    $this->immo_category) {
                
    $arrColumns[]     = 'category=?';
                
    $arrValues[]    = $this->immo_category;
                
    $this->Template->immo_category $this->immo_category;    
            }    
            
            
            
    /* Get Objects */        
            
    $objImmo ImmoModel::findBySortAndFilter($arrColumns$arrValues,  array('order' => $order,'limit' => $limit,'offset' => $offset));
            if(
    $objImmo !== null) {    
                
                
    $objTemplate->title $objImmo->title;;
                    
                
    $template->objects .= $objTemplate->parse();
            } 
    Sowas geht mir aus der Doku nicht hervor

    und was ist mit

    PHP-Code:
        public function generate()
        {

        }
        
        protected function 
    compile() { } 
    passiert?
    Liebe Grüße
    WebRoxx


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

    Standard

    Was genau möchtest du wissen?

  13. #53
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.124

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Was genau möchtest du wissen?
    Wie ich das Template in contao 4.9 prasen und füllen kann. Bleibt es bei compile oder getResponse. Also die Doku erscheint mir da noch nicht vollständig, oder?
    Liebe Grüße
    WebRoxx


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

    Standard

    Du gibst einfach nur einen Response zurück. Wie dieser genau aussieht bleibt dir überlassen. Du kannst auch, wie in der Doku beschrieben, einfach nur $template->getResponse() zurück geben. Du kannst auch null zurück geben, dann wird der Response automatisch aus dem Template erzeugt.

  15. #55
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.124

    Standard

    Ja, okay aber in der Doku ist es einfach nur ein Link

    ja aber diese Daten bekomm ich ne ausgegeben. $objImmo ist aber defintiv was drin.
    PHP-Code:
            /* Get Objects */        
            
    $objImmo ImmoModel::findBySortAndFilter($arrColumns$arrValues,  array('order' => $order,'limit' => $limit,'offset' => $offset));
            if(
    $objImmo !== null) {     
                
    $objTemplate->title $objImmo->title;;
                
    $template->objects .= $objTemplate->parse();
            } 
    Liebe Grüße
    WebRoxx


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

    Standard

    Zitat Zitat von WebRoxx Beitrag anzeigen
    Ja, okay aber in der Doku ist es einfach nur ein Link
    Wie meinst du? In der Doku steht zB:
    PHP-Code:
    class MyFrontendModuleController extends AbstractFrontendModuleController
    {
        protected function 
    getResponse(Template $templateModuleModel $modelRequest $request): ?Response
        
    {
            if (
    $request->isMethod('post')) {
                if (
    null !== ($redirectPage PageModel::findByPk($model->jumpTo))) {
                    throw new 
    RedirectResponseException($redirectPage->getAbsoluteUrl());
                }
            }

            
    $template->action $request->getUri();

            return 
    $template->getResponse();
        }


  17. #57
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.124

    Standard

    Ja okay,

    so gibt er mir erstmal was aus

    PHP-Code:
    $template->objects $objImmo;

    return 
    $template->getResponse(); 
    Dachte man kann nur auch so schön mit verschiedenen Templates (mod_, list) etc arbeiteten

    Damit ich das hier zum Beispiel weiter nutzen kann.
    PHP-Code:
    <?php if(empty($this->objects)): ?>
        <p class="empty"><?= $this->empty ?></p>
    <?php else: ?>    
        <?= $this->objects;?>
    <?php 
    endif; ?>

    PHP-Code:
    $objTemplate = new \FrontendTemplate($this->immo_template); 
    Oder gibt es das nach wie vor ins der 4.9, mus snicht abwärtskompatible sein.
    Liebe Grüße
    WebRoxx


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

    Standard

    Wie gesagt, du kannst in deinem Modul machen was du willst . Das Template Objekt, dass dir übergeben wird, ist eine FrontendTemplate Instanz der Template Datei, die du in der Annotation, bzw. im Service Tag definiert hast, bzw. ansonsten das automatische Template anhand des Typs.

  19. #59
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.124

    Standard

    Okay,

    das ist mein Modul-Template "mod_immo_list" das nimmt er ja auch, aber ich möchte ja das Template ansprechen was für jeden DB-Eintrag verwednet wird.

    PHP-Code:
        protected function getResponse(Template $templateModuleModel $modelRequest $request) : ? Response {
            
            global 
    $objPage;
            
            
    $count 0;
            
    $limit null;
            
    $order 'total_rent ASC';
            
            
    $arrColumns = array();
            
    $arrValues = array();
            
            
    $objTemplate = new \FrontendTemplate($model->immo_template);    
            
                    
            if(
    $model->immo_area) {
                
    $arrColumns[]     = 'area=?';
                
    $arrValues[]    = $model->immo_area;
            }

            if(
    $model->immo_category) {
                
    $arrColumns[]     = 'category=?';
                
    $arrValues[]    = $this->immo_category;
                
    #$this->Template->immo_category = $model->immo_category;    
            
    }    
            
            
            
    $objImmo ImmoImmobilienModel::findBySortAndFilter($arrColumns$arrValues,  array('order' => $order,'limit' => $limit,'offset' => $offset));
            
            if(
    $objImmo !== null) {    
                while(
    $objImmo->next()) {    
                    
    $objTemplate->title $objImmo->title;
                    
    $template->objects .= $objTemplate->prase();
                }
            }    
            
            return 
    $template->getResponse();
        } 
    So bleibt das halt leer
    PHP-Code:
    <?php if(empty($this->objects)): ?>
        <p class="empty"><?= $this->empty ?></p>
    <?php else: ?>    
        <?= $this->objects;?>
    <?php 
    endif; ?>
    Weiß halt wie gesagt nicht ob man es noch so macht
    Liebe Grüße
    WebRoxx


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

    Standard

    Da hat sich nichts verändert.

    Hast du tatsächlich
    PHP-Code:
    objTemplate->prase(); 
    statt
    PHP-Code:
    objTemplate->parse(); 
    geschrieben?

  21. #61
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.124

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Da hat sich nichts verändert.

    Hast du tatsächlich
    PHP-Code:
    objTemplate->prase(); 
    statt
    PHP-Code:
    objTemplate->parse(); 
    geschrieben?
    Ja hab ich wirklich *kopf-wand*

    Danke jetzt komm ich weiter
    Liebe Grüße
    WebRoxx


  22. #62
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.124

    Standard

    Versuche gerade AJAX mit eigener Route zu implementieren

    Jetzt bin ich stutzig, derzeit habe ich diese Variante

    PHP-Code:
    class Plugin implements ExtensionPluginInterface 
    für benutzerdefinierte Routen steht folgendes drin

    PHP-Code:
    class Plugin implements RoutingPluginInterface 
    Schließt das eine das andere aus, oder wie sind da diese 2 bzw 3 Unterschiede zu verstehen, denn eigene Routen kannhttps://community.contao.org/de/forum.php man ja eventuell öfter mal gebrauchen, oder?

    https://docs.contao.org/dev/framewor...lugininterface
    Liebe Grüße
    WebRoxx


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

    Standard

    Eine Klasse in PHP kann mehrere Interfaces implementieren .

    Wozu genau verwendest du ExtensionPluginInterface? Und du brauchst ja auch zumindest noch das BundlePluginInterface?
    Geändert von Spooky (20.02.2020 um 12:58 Uhr)

  24. #64
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.124

    Standard

    Aja,

    es läuft mit dme Ajax

    PHP-Code:
    namespace WebRoxx\ContaoTestBundle\ContaoManager;

    use 
    Contao\ManagerPlugin\Bundle\BundlePluginInterface;
    use 
    Contao\ManagerPlugin\Bundle\Config\BundleConfig;
    use 
    Contao\ManagerPlugin\Bundle\Parser\ParserInterface;

    use 
    Contao\ManagerPlugin\Routing\RoutingPluginInterface;
    use 
    Symfony\Component\Config\Loader\LoaderResolverInterface;
    use 
    Symfony\Component\HttpKernel\KernelInterface;

    use 
    Contao\CoreBundle\ContaoCoreBundle;

    use 
    WebRoxx\ContaoTestBundle\ContaoTestBundle;

    class 
    Plugin implements BundlePluginInterfaceRoutingPluginInterface
    {
        public function 
    getBundles(ParserInterface $parser)
        {
            return [
                
    BundleConfig::create(ContaoTestBundle::class)
                    ->
    setLoadAfter([ContaoCoreBundle::class])
                    ->
    setReplace(['test-bundle']),
            ];
        }
        
        public function 
    getRouteCollection(LoaderResolverInterface $resolverKernelInterface $kernel)
        {
            
    $file __DIR__.'/../Resources/config/routing.yml';
            return 
    $resolver->resolve($file)->load($file);
        }    

    Liebe Grüße
    WebRoxx


  25. #65
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.124

    Standard

    Frage zu den Request,

    dann auch gleich auf Symfony-Basis arbeiten oder Contao?

    PHP-Code:
    Input::get('immoArea');
    $request->query->get('immoArea'); 
    bzw. kann man ja die Variablen auch über die Route übergeben. Aber Symfony-Basis wäre sicher das Vernünftigste für die Zukunft.

    Und Twig Templates waren auch schon möglich und unterstützt Contao, oder musste man da noch was zusätzlich ins Modul einbauen?
    Geändert von WebRoxx (20.02.2020 um 13:39 Uhr)
    Liebe Grüße
    WebRoxx


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

    Standard

    Das Problem hier ist, dass Contao Input Encoding benutzt, während Symfony (über Twig) von Output Encoding ausgeht. Ich bin mir selbst immer noch nicht sicher, ob und was Symfony alles selbst cleaned, wenn du dir über den Request bspw. einen GET Parameter holst.

    Über die Contao Input Klasse wird auf jeden Fall gecleaned - aber ist halt Legacy Code.

  27. #67
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.124

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Das Problem hier ist, dass Contao Input Encoding benutzt, während Symfony (über Twig) von Output Encoding ausgeht. Ich bin mir selbst immer noch nicht sicher, ob und was Symfony alles selbst cleaned, wenn du dir über den Request bspw. einen GET Parameter holst.

    Über die Contao Input Klasse wird auf jeden Fall gecleaned - aber ist halt Legacy Code.
    Guten Morgen.

    Naja okay, ich werd es erstmal auf "Contao-Basis" lassen.

    Zu Ajax, meine Route etc. Funktioniert. Allerdings erhalte ich jetzt diesen Fehler.

    PHP-Code:
    [2020-02-21 07:02:46request.CRITICALUncaught PHP Exception Error"Call to a member function get() on null" at /www/htdocs/domain/vendor/contao/core-bundle/src/Resources/contao/library/Contao/Database.php line 90 {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalThrowableError(code: 0): Call to a member function get() on null at /www/htdocs/domain/vendor/contao/core-bundle/src/Resources/contao/library/Contao/Database.php:90)"} [] 
    Controller und Model sehen so aus.
    PHP-Code:
    namespace WebRoxx\ContaoTestBundle\Controller;

    use 
    Symfony\Component\Routing\Annotation\Route;
    use 
    Symfony\Component\HttpFoundation\JsonResponse;

    use 
    Contao\Input;

    use 
    WebRoxx\ContaoTestBundle\Models\TestModel;

    class 
    DefaultController {
        
        
    /**
         * @Route("/ajax")
         *
         * @return JsonResponse
         */
        
    public function ajaxAction() {
            
            
    $arrColumns = array();
            
    $arrValues = array();
            
            if(
    Input::get('immoArea') && Input::get('immoArea') != 'all') {
                
    $arrColumns[]     = 'area IN('.implode(","Input::get('immoArea')).')'
            }
            
            
    $intTotal TestModel::countBySortAndFilter($arrColumns$arrValues);    
            
            
            return new 
    JsonResponse($intTotal);
        }



    namespace 
    WebRoxx\ContaoTestBundle\Models;

    class 
    TestModel extends \Contao\Model {
        
        protected static 
    $strTable 'tl_test_table';
        
        public static function 
    countBySortAndFilter($arrColumns$arrValues) {
            
    $t = static::$strTable;
            
            if(!
    'BE_USER_LOGGED_IN') {
                
    $time = \Date::floorToMinute();
                
    $arrColumns[] = "($t.start='' OR $t.start<='$time') AND ($t.stop='' OR $t.stop>'" . ($time 60) . "') AND $t.published='1'";
            }
            return static::
    countBy($arrColumns$arrValues);
        }    

    Hatte in irgendein Thread mal gelesen das es an der DB-Anbindung liegt, find das aber irgendwie nicht mehr
    Liebe Grüße
    WebRoxx


  28. #68
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.124

    Standard

    Also habs bis jetzt noch ne hinbekommen auch mit den anderen Einträgen im Forum

    routing.yml
    HTML-Code:
    test_ajax:
        resource: "@ContaoTestBundle/Controller"
        type: annotation
    services.yml
    HTML-Code:
    services:
        _defaults:
            autoconfigure: true
        WebRoxx\ContaoTestBundle\Controller\FrontendModule\ImmoListController: ~
        WebRoxx\ContaoTestBundle\Controller\FrontendModule\ImmoReaderController: ~
        WebRoxx\ContaoTestBundle\Controller\FrontendModule\ImmoFilterController: ~
        WebRoxx\ContaoTestBundle\Controller\DefaultController: ~
    Allerdings ohne Model im Controller funktioniert der wunderbar, deswegen denke ich mal das was in der service.yml nicht stimmt
    Geändert von WebRoxx (23.02.2020 um 15:51 Uhr)
    Liebe Grüße
    WebRoxx


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

    Standard

    Was genau funktioniert nicht?

  30. #70
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.124

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Was genau funktioniert nicht?
    Die Fehlermedlung von post oben drüber kommt eben
    Liebe Grüße
    WebRoxx


  31. #71
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.935

    Standard

    Das

    PHP-Code:
     if(!'BE_USER_LOGGED_IN') { 
    liest sich für mich falsch: 'BE_USER_LOGGED_IN' ist ein nichtleerer String, also true. Daher sollte if(!'BE_USER_LOGGED_IN') das selbe wie if (false) sein, also nie ausgeführt werden. Damit hast Du letztlich (weiter unten): TestModel::countBySortAndFilter([], []).

    Edit: eben zu spät gesehen, daß Du $arrColumns, $arrValues als Parameter übergibst.
    Geändert von fiedsch (23.02.2020 um 16:13 Uhr)
    Contao-Community-Treff Bayern: http://www.contao-bayern.de

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

    Standard

    Du musst noch das Contao Framework initialisieren. Dazu kannst du entweder den _scope auf Frontend setzen, oder du injectest dir den ContaoFramework Service und rufst in deiner Route $this->framework->initialize() auf.

  33. #73
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.124

    Standard

    okay

    hab es jetzt so, da läuft es

    PHP-Code:
    namespace WebRoxx\ContaoTestBundle\Controller;

    use 
    Symfony\Component\Routing\Annotation\Route;
    use 
    Symfony\Component\HttpFoundation\JsonResponse;
    use 
    Symfony\Bundle\FrameworkBundle\Controller\Controller;

    use 
    Contao\Input;
    use 
    Contao\Model;

    use 
    Contao\Database;

    use 
    WebRoxx\ContaoTestBundle\Models\ImmoImmobilienModel;

    class 
    DefaultController extends Controller {

        
    /**
         * @Route("/ajax")
         *
         * @return JsonResponse
         */
        
    public function ajaxAction() {
            
            
    $this->container->get('contao.framework')->initialize();  
            
            
    $arrColumns = array();
            
    $arrValues = array();
            
            
    Database::getInstance();
            
            if(
    Input::get('immoArea') && Input::get('immoArea') != 'all') {
                
    $arrColumns[]     = 'area IN('.implode(","Input::get('immoArea')).')'
            }
            
            
    $intTotal ImmoImmobilienModel::countBySortAndFilter($arrColumns$arrValues);    
            
            
            return new 
    JsonResponse($intTotal);
        }

    mit alleine der routing.yml hab ich es ne hinbekommen...

    HTML-Code:
    test_ajax:
        resource: "@ContaoTestBundle/Controller"
        type: annotation
        defaults:
            _scope: frontend
    Liebe Grüße
    WebRoxx


  34. #74
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.124

    Standard

    Hallo,

    wenn ich den Hook so aufbaue:

    PHP-Code:
    class GetSearchablePagesListener implements ServiceAnnotationInterface
    {
        
    /**
         * @Hook("getSearchablePages")
         */
    public function onGetSearchablePages(array $pagesint $root nullbool $isSitemap falsestring $language null): array {

    ..

    und

    HTML-Code:
    services:
        _defaults:
            autoconfigure: true
        WebRoxx\ContaoTestBundle\EventListener\GetSearchablePagesListener: ~
    funktioniert der 1a

    wenn ich allerdings laut Doku das folgendes mache

    PHP-Code:
    class GetSearchablePagesListener implements ServiceAnnotationInterface
    {
        
    /**
         * @Hook("getSearchablePages")
         */
    public function __invoke(string $content, array $pageData, array &$indexData): void
     
    {
    ... 
    führt Contao ihn nicht aus.
    Liebe Grüße
    WebRoxx


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

    Standard

    Siehe die README des Service Annotation Bundles. Damit Die Service Annotations funktionieren, muss bspw. autoconfigure für den jeweiligen Service aktiv sein.

  36. #76
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.124

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Siehe die README des Service Annotation Bundles. Damit Die Service Annotations funktionieren, muss bspw. autoconfigure für den jeweiligen Service aktiv sein.
    PHP-Code:
    services:
        
    _defaults:
            
    autoconfiguretrue 
    Ist das damit nicht erledigt?

    EDIT: grad gesehen das ich diesen Fehler bekomme: Cannot pass parameter 3 by reference

    HTML-Code:
    [2020-02-27 07:20:47] request.CRITICAL: Uncaught PHP Exception Error: "Cannot pass parameter 3 by reference" at /www/htdocs/domain/vendor/contao/core-bundle/src/Resources/contao/library/Contao/Automator.php line 363 {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalThrowableError(code: 0): Cannot pass parameter 3 by reference at /www/htdocs/domain/vendor/contao/core-bundle/src/Resources/contao/library/Contao/Automator.php:363)"} []

    Da habe ich gleich noch eine Frage, wie man aus dem DCA herraus die Sitemap aktualisiert?

    Das aus der tl_page wird ja nicht einfach so funktionieren. Muss ich da mein Controller importieren?
    PHP-Code:
        public function generateSitemap()
        {
            
    /** @var Symfony\Component\HttpFoundation\Session\SessionInterface $objSession */
            
    $objSession Contao\System::getContainer()->get('session');

            
    $session $objSession->get('sitemap_updater');

            if (empty(
    $session) || !is_array($session))
            {
                return;
            }

            
    $this->import('Contao\Automator''Automator');

            foreach (
    $session as $id)
            {
                
    $this->Automator->generateSitemap($id);
            }

            
    $objSession->set('sitemap_updater'null);
        } 
    Geändert von WebRoxx (27.02.2020 um 08:24 Uhr)
    Liebe Grüße
    WebRoxx


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

    Standard

    Zitat Zitat von WebRoxx Beitrag anzeigen
    Hallo,

    wenn ich den Hook so aufbaue:

    PHP-Code:
    class GetSearchablePagesListener implements ServiceAnnotationInterface
    {
        
    /**
         * @Hook("getSearchablePages")
         */
    public function onGetSearchablePages(array $pagesint $root nullbool $isSitemap falsestring $language null): array {

    ..

    und

    HTML-Code:
    services:
        _defaults:
            autoconfigure: true
        WebRoxx\ContaoTestBundle\EventListener\GetSearchablePagesListener: ~
    funktioniert der 1a

    wenn ich allerdings laut Doku das folgendes mache

    PHP-Code:
    class GetSearchablePagesListener implements ServiceAnnotationInterface
    {
        
    /**
         * @Hook("getSearchablePages")
         */
    public function __invoke(string $content, array $pageData, array &$indexData): void
     
    {
    ... 
    führt Contao ihn nicht aus.
    Du hast irrtümlich die Signatur des indexPage Hooks für den getSearchablePages Hook verwendet.

  38. #78
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.124

    Standard

    Ja stimmt *kopfwand*

    eine __invoke darf ja kein return haben. Wie gebe ich da die Pages zurück? Also wenn ich nichts zurückgebe ist die Sitemap halt leer
    Liebe Grüße
    WebRoxx


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

    Standard

    Zitat Zitat von WebRoxx Beitrag anzeigen
    eine __invoke darf ja kein return haben.
    __invoke ist eine ganz normale Funktion und kann alles haben.

  40. #80
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.124

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    __invoke ist eine ganz normale Funktion und kann alles haben.
    HTML-Code:
    An error occurred while executing the "contao:install-web-dir" command: PHP  
       Fatal error:  A void function must not return a value in /www/htdocs/domain/vendor/webroxx/contao-test-bundle/src/EventListener/GetSearchablePagesListener.php on line 59
    Zeile 58 - 60
    PHP-Code:
                    
            
    return $pages;
        } 
    Liebe Grüße
    WebRoxx


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
  •