Ergebnis 1 bis 10 von 10

Thema: DCA - Eval Ändern ja nach Feldauswahl

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

    Standard DCA - Eval Ändern ja nach Feldauswahl

    Hallo,

    besteht die Möglichkeit einen EVAL eines beliebigen Feldes dynamisch zu ändern ja nach dem ob eine Checkbox gewähl ist oder nicht?

    Folgendes Vorhaben habe ich im Kalender:

    Bei den Events gibt eine Checkbox "Konzert" wenn diese angehackt wird soll der Event-Titel nicht mehr Pflicht sein.


    Auf der Checkbox liegt schon ein "submitOnChange'=>true" damit ich weitere Felder angezeigt bekomme, jetzt dacht ich ich kann es im DCA Config per Submit_callback steuern oder so..aber läuft leider nicht, habe auch daazu im Forum nichts finden können, dachte an sowas:

    PHP-Code:
        public function loadDCAtitle(DataContainer $dc)
        {
            if(
    $dc->activeRecord->concert) {
                
    $GLOBALS['TL_DCA']['tl_calendar_events']['fields']['title']['eval'] = array('mandatory'=> false);
            } else {
                
    $GLOBALS['TL_DCA']['tl_calendar_events']['fields']['title']['eval'] = array('mandatory'=> true);
            }    
        } 
    Vielleicht weiß einer ne Hilfe
    Liebe Grüße
    WebRoxx


  2. #2
    Contao-Nutzer
    Registriert seit
    20.11.2013.
    Beiträge
    202

    Standard

    Hallo Ralf2011,

    darf ich fragen wo die loadDCAtitle() her kommt und wann die ausgelöst wird? Habe sowas ähnliches mal benötigt, wo eine Checkbox ausgegraut werden sollte wenn eine andere angehakt ist. Wenn is mich recht erinnere war das auch nur eine if-Abfrage die das löst. Also warum noch die Funktion außen rum?

    Viele Grüße
    hippo

  3. #3
    Contao-Urgestein Avatar von cliffparnitzky
    Registriert seit
    08.10.2010.
    Ort
    Lüneburg
    Beiträge
    2.452
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Moin,
    ich hab das für Formularfelder mittels onload_callback gemacht:

    PHP-Code:
    <?php

    // dca/tl_form_field.php

    $GLOBALS['TL_DCA']['tl_form_field']['config']['onload_callback'][] = array('tl_form_field_x''modifyOptionsWidget');

    class 
    tl_form_field_x extends tl_form_field
    {
        public function 
    modifyOptionsWidget($dc)
        {
            
    $objField = \FormFieldModel::findById($dc->id);
            if (
    $objField != null && $objField->type == 'checkbox')
            {
                
    $GLOBALS['TL_DCA']['tl_form_field']['fields']['label']['eval']['mandatory'] = true;
            }
        }
    }
    Gruß, Cliff

  4. #4
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.141

    Standard

    Hey,

    das FormFieldModel greift das in jeder DCA oder nu bei den Formularfeldern? Denn bei mir kommt da null zurück. ob die $dc->id ja logischer Weise existiert.

    @ hippo wie meinst du das mit dem if und wo soll das if stehen?
    Liebe Grüße
    WebRoxx


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

    Standard

    Wo hast du denn deine loadDCAtitle Methode registriert??

    cliffen hat dir anhand seines Beispiels nur gezeigt, wie er es gemacht hat. Du musst logischerweise diesen onload_callback in deiner -richtigen- DCA Datei regstieren.
    Also mit tl_calendar_events

    In jedem Fall sollte dein Unterfangen möglich sein :-)
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

  6. #6
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.141

    Standard

    PHP-Code:
    $GLOBALS['TL_DCA']['tl_calendar_events']['config']['onload_callback'][] = array('tl_calendar_events_rp''loadDCAtitle'); 
    ich bin schon im richtigen DCA

    PHP-Code:
    public function loadDCAtitle(DataContainer $dc)
    {
    ...

    aber im dc stehen keine Felder drin
    Liebe Grüße
    WebRoxx


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

    Standard

    Auch nicht über $dc->activeRecord?

    Alternativ hast du ja in jedem Fall die $dc->id über die du dir halt dann notfalls per Model den Datensatz holen kannst.
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

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

    Standard

    Zitat Zitat von the_scrat Beitrag anzeigen
    Auch nicht über $dc->activeRecord?

    Alternativ hast du ja in jedem Fall die $dc->id über die du dir halt dann notfalls per Model den Datensatz holen kannst.
    Nein auch nicht, ist leer. ja die id habe ich aber was nützt mir der Datensatz ich will ja den Event-Titel als nicht Pflichtfeld markieren :/
    Liebe Grüße
    WebRoxx


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

    Standard

    Zitat Zitat von Ralf2011 Beitrag anzeigen
    Nein auch nicht, ist leer. ja die id habe ich aber was nützt mir der Datensatz ich will ja den Event-Titel als nicht Pflichtfeld markieren :/
    Ja, vielleicht steht in dem Datensatz ob deine Checkbox angehakt ist oder nicht.... darum gehts doch, darauf willst du doch reagieren?!

    Hol dir den aktuellen Datensatz, prüfe ob die Checkbox gesetzt/nicht gesetzt ist und DANN ändere die DCA an dieser Stelle!
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

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

    Standard

    Zitat Zitat von the_scrat Beitrag anzeigen
    Ja, vielleicht steht in dem Datensatz ob deine Checkbox angehakt ist oder nicht.... darum gehts doch, darauf willst du doch reagieren?!

    Hol dir den aktuellen Datensatz, prüfe ob die Checkbox gesetzt/nicht gesetzt ist und DANN ändere die DCA an dieser Stelle!
    BÄM, das geht super herzlichen Danke für die Hilfe und Anstupser
    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
  •