Ergebnis 1 bis 7 von 7

Thema: Problem mit Subpaletten

  1. #1
    Contao-Nutzer
    Registriert seit
    14.06.2010.
    Beiträge
    81

    Standard Problem mit Subpaletten

    Hallo,

    ist es nicht möglich eine Subpalette in einer Subpalette zu verwenden?
    Ich habe einfach eine CheckBox angebot welche mir eine subpalette aktivieren soll. Das geht. Also am Anfang wird das name Textfeld und die angebot check box angezeigt.
    wenn man dann auf das angebot klickt, sollte das angebotText textfeld angezeigt werden. zusätzlich sollte das drop down menü angebotEndType angezeigt werden. je nach typ sollte entweder danach ein textfeld angebotNumBoxes, oder nichts angezeigt werden. Je nach dem was in angebotEndType vorher ausgewählt wird funktioniert es einwandfrei oder nicht.

    statt der angebots subpalette wird noch einmal die gesamte palette angezeigt.
    2016-10-10_17-10-40.jpg

    Sobald ich noch einmal die seite neu lade (F5) wird die seite richtig angezeigt.
    2016-10-10_17-14-03.jpg

    Also so wie es aussieht hat das etwas mit dem nachladen zu tun. Hat hier jemand eine Idee?

    Danke Ludi




    Für die Erklärung habe ich ein kleiner Test zusammen gestellt:
    Code:
    <?php
    
    /**
     * Table tl_bk_abo
     */
    $GLOBALS['TL_DCA']['tl_bk_abo'] = array
    (
    
    	// Config
    	'config' => array
    	(
    		'dataContainer'               => 'Table',
    		'enableVersioning'            => true,
            'ptable' => 'tl_member',
    
            'closed'                      => false,
            'sql' => array
    		(
    			'keys' => array
    			(
    				'id' => 'primary',
    			)
    		),
    
    	),
    
    	// List
    	'list' => array
    	(
            'sorting' => array
            (
                'mode'                    => 1,
                'fields'                  => array('id DESC'),
                'flag'                    => 1,
                'panelLayout'			  => "sort,filter;search,limit"
            ),
            'label' => array
            (
                'fields'                  => array('name'),
                'showColumns'             => true,
            ),
    		'global_operations' => array
    		(
                //das ist noetig, sonst werden die meldungen nicht angezeigt (dca ist closed)
    			'tmp' => array
    			(
    				'label'               => array(" "),
    			)
    		),
    		'operations' => array
    		(
                'edit' => array
                (
                    'label'               => &$GLOBALS['TL_LANG']['tl_bk_abo']['edit'],
                    'href'                => 'act=edit',
                    'icon'                => 'edit.gif'
                ),
    
            )
    	),
    
    	// Select
    	'select' => array
    	(
    		'buttons_callback' => array()
    	),
    
    	// Edit
    	'edit' => array
    	(
    		'buttons_callback' => array()
    	),
    
    	// Palettes
    	'palettes' => array
    	(
    
            '__selector__'                => array('name','angebot','angebotEndType'),
            'default'                     => 'name,angebot',
        ),
    
    	// Subpalettes
    	'subpalettes' => array
    	(
            'angebot'                              => 'angebotText,angebotEndType,',
            "angebotEndType_1"          => '',
            "angebotEndType_2"           => 'angebotNumBoxes',
        ),
    
    	// Fields
    	'fields' => array
    	(
    		'id' => array
    		(
    			'sql'                     => "int(10) unsigned NOT NULL auto_increment"
    		),
            'pid' => array
            (
                'sql'                     => "int(10) unsigned NOT NULL default '0'",
                'foreignKey'              => 'tl_member.id',
                'relation'                => array('type'=>'belongsTo', 'load'=>'lazy')
            ),
    
    
            'name' => array(
                'label'                   => array("Name"),
                'exclude'                 => true,
                'inputType'               => 'text',
                'default'                 => 1,
                'eval'                    => array('mandatory'=>true,'includeBlankOption'=>false, 'tl_class'=>'w100'),
                'sql'                     => "varchar(32) NOT NULL default ''"
            ),
    
    
    
            'angebot' => array(
                'label'                   => array("Angebot"),
                'exclude'                 => true,
                'inputType'               => 'checkbox',
                'eval'                    => array('submitOnChange'=>true, 'tl_class'=>'w100'),
                'sql'                     => "char(1) NOT NULL default ''"
            ),
    
            'angebotText' => array(
                'label'                   => array("AngebotText"),
                'exclude'                 => true,
                'inputType'               => 'text',
                'default'                 => 1,
                'eval'                    => array('mandatory'=>true,'includeBlankOption'=>false, 'tl_class'=>'w100'),
                'sql'                     => "varchar(32) NOT NULL default ''"
            ),
    
    
            'angebotEndType' => array(
                'label'                   => &$GLOBALS['TL_LANG']['tl_bk_abo']['endType'],
                'exclude'                 => true,
                'inputType'               => 'select',
                'options'                 => array(1=>'unbegrenzt', 2=>'Anzahl Kisten'),
                'default'                 => 1,
                'eval'                    => array('submitOnChange'=>true,'mandatory'=>true,'includeBlankOption'=>false, 'tl_class'=>'w100'),
                'sql'                     => "int(10) NOT NULL default '1'"
            ),
            'angebotNumBoxes' => array
            (
                'label'                   => array("Anzahl"),
                'search'                  => false,
                'sorting'                 => false,
               // 'flag'                    => 1,
                'inputType'               => 'text',
                'eval'                    => array('mandatory'=>true, 'maxlength'=>255),
                'sql'                     => "varchar(255) NOT NULL default ''"
            ),
        )
    );
    Geändert von ludi (10.10.2016 um 20:03 Uhr)

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

    Standard

    Zitat Zitat von ludi Beitrag anzeigen
    Hallo,

    ist es nicht möglich eine Subpalette in einer Subpalette zu verwenden?
    Hi,

    nein, das ist leider nicht möglich*. Subpaletten in Subpaletten kommt offiziell ab Contao4


    *bzw. nur über einen "Hack"
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

  3. #3
    Contao-Nutzer
    Registriert seit
    14.06.2010.
    Beiträge
    81

    Standard

    Zitat Zitat von the_scrat Beitrag anzeigen
    Hi,

    nein, das ist leider nicht möglich*. Subpaletten in Subpaletten kommt offiziell ab Contao4


    *bzw. nur über einen "Hack"
    hallo,
    danke für die antwort.

    Wie lautet der Hack?
    Geändert von ludi (10.10.2016 um 19:57 Uhr)

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

    Standard

    Hi, musst du hier im entwicklerbereich suchen. Wurde vor einiger Zeit mal besprochen. Hatte dazu glaube ich ein Beispiel gepostet....

    Gesendet von meinem SM-G935F mit Tapatalk
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

  5. #5
    Contao-Nutzer
    Registriert seit
    14.06.2010.
    Beiträge
    81

    Standard

    Hallo,

    ich habe deinen Vorschlag gefunden

    Dein Beispiel war einfach ein submit callback:
    Code:
    public function checkPalette($dc)
    {
    
           if(!$dc->activeRecord->addCleaner)
           {
                  $objModule = [MODELNAME]::findByPk(\Input::get('id'));
                  $objModule->addPoorMansCron = '';
                  $objModule->save();
           }
    }

    bei mir ist in den meisten fällen activeRecord nicht gesetzt. Kann mir jemand mal sagen wann active record gesetzt ist und wann nicht?

    weiters wird beim ändern der checkbox (obwohl 'submitOnChange'=>true) zwar die db upgedated, aber der onsubmit_callback wird nicht aufgerufen. der onload_callback wird aber aufgerufen.

    Danke
    Geändert von ludi (12.10.2016 um 14:30 Uhr)

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

    Standard

    Lad halt den Datensatz einfach komplett. Du befindest doch in ihm, also hast du zugriff auf die ID in der Adresszeile \Input::get('id'). Darüber kommst du an alle Daten die du brauchst.
    Programmers don't comment their code. It was hard to write, it should be hard to understand...

  7. #7
    Contao-Nutzer
    Registriert seit
    14.06.2010.
    Beiträge
    81

    Standard

    Jetzt habe ich noch ein Problem.
    warum wird bei einer Checkbox obwohl 'submitOnChange'=>true gesetzt ist zwar die DB upgedated, aber nicht der onsubmit_callback aufgerufen.

    Denn man erhaltet dadurch das gleiche Problem, wenn der Benutzer nicht speichert.

    Sonst muss ich es beim onload_callback updaten, was aber auch nicht ganz so gut ist.
    LG Ludi

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
  •