Ergebnis 1 bis 3 von 3

Thema: DCA onload_callback - \Contao\Input::post('xy') immer leer

  1. #1
    Contao-Nutzer
    Registriert seit
    07.12.2018.
    Beiträge
    14

    Standard DCA onload_callback - \Contao\Input::post('xy') immer leer

    Guten Tag zusammen,

    leider hänge ich schon wieder ziemlich mit einer Filter Geschichte bei Contao.
    Ich möchte einen Custom Filter für ein DCA erstellen.

    Dazu habe ich mittels 'panel_callback' mir einen neuen Filter anglegt. => Funktioniert.

    Dann möchte ich nach Absenden dieses Filters natürlich auch den gewählten Filter auslesen.
    Das mache ich mittels dem DCA 'onload_callback'.
    Dieser wird auch einwandfrei aufgerufen.
    Jedoch bekomme ich die gewählte Option nicht aus der Session, oder wo diese Option auch immer gespeichert sein mag.

    Alle Post Variablen sind leer.

    Hier mal mein Code:

    'panel_callback' für den Custom Filter:
    PHP-Code:
        public function panelCallback(\Contao\DataContainer $dc)
        {
            
    $activityArr = [];
            
    $participant $this->entityManager->getRepository(ConferenceEntity::class)->find($dc->id);

            
    $strFilterValue 'all';
            if (isset(
    $this->session->get('filter')['tl_participant']['activity_filter'])) {
                
    $strFilterValue $this->session->get('filter')['tl_participant']['activity_filter'];
            }

            
    $objWidgetFilter = new \Contao\SelectMenu();
            
    $objWidgetFilter->id 'activity_filter';
            
    $objWidgetFilter->name 'activity_filter';
            
    $objWidgetFilter->label 'Activity';
            
    $objWidgetFilter->value $strFilterValue;
            
    $activityArr[] = ['value' => 'all''label' => 'all'];
            foreach (
    $participant->getActivities() as $activity) {
                
    $activityArr[] = ['value' => $activity->getId(), 'label' => $activity->getTitle()];
            }
            
    $objWidgetFilter->options $activityArr;
            
    $objWidgetFilter->onchange 'this.form.submit()';

            
    $strBuffer '<div class="tl_filter tl_subpanel">';
            
    $strBuffer .= sprintf('<strong style="margin-right: 5px;">%s</strong>'$objWidgetFilter->generateLabel());
            
    $strBuffer .= $objWidgetFilter->generate();
            
    $strBuffer .= '</div>';

            return 
    $strBuffer;
        } 

    Und hier der 'onload_callback'
    PHP-Code:
        public function onloadCallback()
        {
             
    dump(\Contao\Input::post('activity_filter')); // => LEER

             // Testweise versucht
             
    dump($_POST); // => auch leer
        

    Ich kenne auch diesen Post, der hilft mir aber leider nicht weiter.
    https://community.contao.org/de/show...Container-Hook

    Tausend Dank für einen Tipp!

  2. #2
    Contao-Nutzer
    Registriert seit
    07.12.2018.
    Beiträge
    14

    Standard

    Was ich mittlerweile herausgefunden habe:
    Lasse ich den Inhalt mittles 'var_dump()' anzeigen, steht der Inhalt auch tatsächlich drin.

    PHP-Code:
        public function onloadCallback(\Contao\DataContainer $dc)
        {
            
    var_dump(\Contao\Input::post('activity_filter'));  // => gefüllt mit der ID
        

    Die spricht ja eigentlich dafür, dass wenn die Weiterverarbeitung unterbunden wird, was 'var_dump()' ja tut durch seine Ausgabe, ist das Post Array noch gefüllt.
    Ansonsten wird es an irgendeiner Stelle geleert?

  3. #3
    Contao-Fan Avatar von eS_IT
    Registriert seit
    21.07.2010.
    Ort
    Werne a. d. Lippe
    Beiträge
    585
    Partner-ID
    6161
    User beschenken
    Wunschliste

    Standard

    Hi FunkeMT,

    nach dem Absenden des Filterformulars wird ein Redirect auf die selbe Seite gemacht. Dies ist ein GET-Request, weshalb die POST-Parameter nicht mehr zur Verfügung stehen. Bin mir nicht ganz sicher, aber ich vermute Contao speichert die Filter in der Session. Da Dein Feld aber manuell eingefügt wurde, wird es nicht in die Verarbeitung von Contao mit einbezogen.

    Warum erstellst Du nicht ein DCA-Feld mit foreignKey? So könntest Du Dir das Erzeugen eines eigenen Filters sparen.
    Viele Grüße,
    eS_IT
    --
    e@sy Solutions IT - Ihr Partner für professionelle Softwareentwicklung
    Website - Contao Codebook - Partnerprofil - GitHub

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
  •