Ergebnis 1 bis 4 von 4

Thema: load_callback Funktion um DCA Field zu deaktivieren

  1. #1
    Gesperrt
    Registriert seit
    02.11.2012.
    Beiträge
    52

    Standard load_callback Funktion um DCA Field zu deaktivieren

    Hallo,

    ich möchte über die dca field Funktion load_callback
    eine Funktion aufrufen die das aktuelle Feld deaktiviert (eval disabled true) oder eben nicht.

    In dem Field vom DCA steht nun 'load_callback' => array(array('tl_news','checkUser1'))

    Die Funktion befindet sich auch in der entsprechenden tl_news.php und wird auch gestartet.
    Wie übergebe ich nun nach dem Aufruf ein eval diabled true?

    Meine Funktion sieht momentan so aus:
    PHP-Code:
    public function checkUser1()
        {
            
    $eval = array('eval' => array(
                                        
    'disabled'    =>true
                                        
    )
                          );
            return 
    $this->$eval;
        } 
    Bin für jede Antwort dankbar.

  2. #2
    Contao-Nutzer Avatar von petra
    Registriert seit
    10.01.2010.
    Ort
    Herford
    Beiträge
    194

    Standard

    Bei Deiner Funktion fehlen die Parameter

    PHP-Code:
    public function checkUser1($varValueDataContainer $dc
    $varValue dürfte dann Dein Wert sein

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

    Standard

    Hi qf_rigo,

    so wird das nix ;-)
    Wenn du einen Field-Callback machst, was es allem Anschein nach ist, ist es schon zu spät, damit kannst du lediglich den Wert des Feldes beim Laden des Feldes modifizieren/ändern, mehr aber auch nicht. Eval hat damit garnichts zu tun (meine ich)

    Du müsstest einen onload_callback registrieren und zwar in der tl_news

    Also
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_news']['config']['onload_callback'][] = array('tl_news_whatever','checkUser1'); 
    Am Ende deiner Datei erstellst du dir deine Klasse

    PHP-Code:

    class tl_news_whatever extends tl_news
    {

    public function 
    checkUser1()
    {
     
    // deine Prüffunktion ob das Feld aktiv oder nicht aktiv sein soll

    // Feld disabled schalten
    $GLOBALS['TL_DCA']['tl_news']['fields']['feldname']['eval']['disabled'] = true;

    }

    So müsste es funktionieren!
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

  4. #4
    Gesperrt
    Registriert seit
    02.11.2012.
    Beiträge
    52

    Standard

    Hallo und danke für die Antworten.
    Die Funktion an sich passt an der Stelle. Um sie nun zum laufen zu bekommen musste man lediglich das Array der Felder erweitern. In dem Fall also [eval]

    PHP-Code:
        public function checkUser1()
        {
                
    $GLOBALS['TL_DCA']['tl_news']['fields']['user1']['eval'] = array(
                                                                            
    'doNotCopy' =>true,
                                                                            
    'disabled'    =>true
                                                                            
    );

    Ich mache das jetzt noch dynamisch sodass die Funktion automatisch Felder anlegt. Mit dem Erweitern des Arrays ist das ja alles ein Klacks!

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
  •