Ergebnis 1 bis 7 von 7

Thema: Backend Modul wie Einstellungen

  1. #1
    Contao-Fan Avatar von Zero
    Registriert seit
    25.05.2010.
    Ort
    Korntal
    Beiträge
    520
    User beschenken
    Wunschliste

    Standard Backend Modul wie Einstellungen

    Halloa.

    Ich versuche ein Modul zu erstellen, welches sich wie die Einstellungen direkt zum Editieren öffnet. Allerdings finde ich die mir fehlende Konfiguration nicht.
    In meiner Config Datei steht folgendes:
    PHP-Code:
    array_insert($GLOBALS['BE_MOD']['system'], 20, array
        (
            
    'tl_zz_default' => array
            (
                
    'tables' => array('tl_zz_default'),
                
    'callback' => 'tl_zz_default'
            
    )
        ) 
    In meiner Modul Datei:
    PHP-Code:
    /* * ***********
     *
     * Modul
     *
     */

    class tl_zz_default extends BackendModule
    {
        
    /**
         * Template
         * @var string
         */
        
    protected $strTemplate 'be_zz_default';
        
        protected function 
    compile()
        {
    //        $this->loadLanguageFile('tl_zz_default');
    //        $this->Template->href = $this->getReferer(true);
    //        $this->Template->title = specialchars($GLOBALS['TL_LANG']['MSC']['backBT']);
    //        $this->Template->button = $GLOBALS['TL_LANG']['MSC']['backBT'];
    //        echo "<pre>";
    //        print_r($this);
    //        echo "</pre>";
        
    }

    Das auskommentierte war ein Template versuch. Das klappt soweit. Nur wie bekomme ich da meine Felder aus der DCA Datei rein? Bei tl_settings habe ich nur eine DCA Datei gefunden, aber kein Template oder ähnliches.

    Das ist der Inhalt meiner DCA Datei:
    PHP-Code:
    $GLOBALS['TL_DCA']['tl_zz_default'] = array
    (
        
    // Config
        
    'config' => array
        (
            
    'dataContainer'               => 'Table',
            
    'table'                      => 'tl_zz_default',
            
    'closed'                      => true
        
    ),
        
    // Palettes
        
    'palettes' => array
        (
            
    'default'                     => '{title_legend},title;'
        
    ),
        
    // Fields
        
    'fields' => array
        (
            
    'title' => array
            (
                
    'label'                   => &$GLOBALS['TL_LANG']['tl_zz_default']['title'],
                
    'inputType'               => 'text',
                
    'eval'                    => array('mandatory'=>true'maxlength'=>255)
            )
        )
    ); 
    Die Datenbank ist auch angelegt mit den entsprechenden Felder:
    Code:
    CREATE TABLE `tl_zz_default` (
      `id` int(10) unsigned NOT NULL auto_increment,
      `pid` int(10) unsigned NOT NULL default '0',
      `tstamp` int(10) unsigned NOT NULL default '0',
      `title` varchar(255) NOT NULL default '',
      PRIMARY KEY  (`id`),
      KEY `pid` (`pid`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    Ich bin echt ratlos. Die DCA Datei ist bei Config nahezu identisch mit der tl_settings DCA Datei. Die schreiben in eine Datei und ich halt in eine Tabelle. Das dürfte aber keinen unterschied machen.

    Wie schaffe ich es nun, bei Klick auf mein Modul, direkt die editierbaren Felder anzuzeigen? Danke fürs mitdenken.
    Mein Blog -> brothers-project.de

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

    Standard

    Ich glaube schon, dass die Tabelle den kleinen, aber feinen Unterschied macht. Denn bei Angabe, dass du eine Tabelle nutzen möchtest, kannst du ja automatisch mehr als einen Datensatz speichern, was beim Dateibasierten DCA nicht möglich ist.

    Generell musst du aber ja "eigentlich" nur eins machen. In deinem Callback prüfst du als erstes ob es einen Datensatz id=1 gibt. Wenn nicht, leitest du weiter main.php?do=tl_zz_default&act=create
    Wenn es den Datensatz id=1 gibt, leitest du eben weiter auf main.php?do=tl_zz_default&act=edit&id=1

    Damit müsstest du eigentlich genau deine Funktionalität erhalten.

    Keine Ahnung obs funktioniert, war nur so eine Idee.....
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

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

    Standard

    Du hast dein Modul als callback Modul registriert, das hat keine DCA Definitionen.

    Daher also wenn du DCA Angaben verwendet willst, musst du es über die Tabelle registrieren.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  4. #4
    Contao-Fan Avatar von Zero
    Registriert seit
    25.05.2010.
    Ort
    Korntal
    Beiträge
    520
    User beschenken
    Wunschliste

    Standard

    @the_scrat: Das werde ich mal ausprobieren. Hört sich logisch an.

    Zitat Zitat von BugBuster Beitrag anzeigen
    Daher also wenn du DCA Angaben verwendet willst, musst du es über die Tabelle registrieren.
    Das mit dem Callback geht soweit klar. Nur was meinst du mit "über die Tabelle registrieren"?
    Mein Blog -> brothers-project.de

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

    Standard

    Einstellungen bzw. Settings ist kein callback Modul!

    Nochmal. Es gibt (mit Core Mitteln) 2 Arten von Backend Modulen.
    a) basierend auf Tabellen und DCA gesteuert
    b) als Callback Modul, kann Tabellen haben, muss aber nicht, hat jedenfalls keine DCA Definition.

    Sehen wir uns mal den System Abschnitt an im Core (backend config.php):
    PHP-Code:
    /**
     * Back end modules
     */
    $GLOBALS['BE_MOD'] = array

        
    'system' => array
        (
            
    'files' => array
            (
                
    'tables' => array('tl_files')
            ),
            
    'log' => array
            (
                
    'tables' => array('tl_log')
            ),
            
    'settings' => array
            (
                
    'tables' => array('tl_settings')
            ),
            
    'maintenance' => array
            (
                
    'callback' => 'ModuleMaintenance'
            
    )
        ) 

    Dateiverwaltung, Systemlog und Einstellungen sind über Ihre dort jeweils definierte DB Tabelle und gleichnahmige! DCA Datei definiert. Contao baut daraus das Formular.
    Systemwartung ist hier als Callback Modul definiert. Hier ist der Progger für die Ausgabe komplett selbst verantwortlich.

    Daher musst du dich entscheiden. Wenn du bei DCA bleiben willst dann muss in etwa sowas (ungetestet) in deiner config stehen.

    PHP-Code:
    $GLOBALS['BE_MOD']['system']['meinmodul'] = array
            (
                
    'tables' => array('tl_zz_default'),

            ) 
    Geändert von BugBuster (02.07.2012 um 23:52 Uhr)
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  6. #6
    AG CMS-Garden
    Contao-Urgestein
    Avatar von lindesbs
    Registriert seit
    05.06.2009.
    Ort
    Oer-Erkenschwick
    Beiträge
    4.154
    Partner-ID
    keine
    User beschenken
    Wunschliste

    Standard

    Schau Dir mal meinen DC_Memory an, damit kann man auch mittels DCA solche Dinge machen.
    http://www.contao.org/de/extension-l....60009.de.html

    Meinen Benchmark und TranslationHelper habe ich damit unter anderem gebaut.
    von Willi Voltz aus PR 500: Henry George sagte einmal: »Kultur ist Zusammenarbeit.«


    Contao-Hosting: begeisterter Uberspace-Nutzer

  7. #7
    Contao-Fan Avatar von Zero
    Registriert seit
    25.05.2010.
    Ort
    Korntal
    Beiträge
    520
    User beschenken
    Wunschliste

    Standard

    Vielen Dank erstmal. Das bedarf einer längeren Einarbeitungszeit.
    Ich werde dann mal die Tage hier das Ergebnis Posten
    Mein Blog -> brothers-project.de

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •