• Willkommen im Zend Framework Forum

    ZF1 Zend Framework 1 + ZF2 Zend Framework 2

    Das Zend Framework Forum ist seit 2006 die erste Anlaufstelle für Zend Framework Entwickler in Deutschland. Mit über 70.000 Beiträgen und einer steigenden Nutzerzahl bietet das Forum hilfreiche Themen und ZF-Tutorials für professionelle Entwickler, fortgeschrittene Programmierer sowie Zend Framework Einsteiger.
    Wenn dies Dein erster Besuch in der Zend Framework Community ist, lies bitte zuerst die Hilfe - FAQ durch. Du musst Dich registrieren, bevor Du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um die Registrierung zu starten. Du kannst auch jetzt schon Beiträge lesen. Hier im Forum findest Du die Zend Framework Hilfe, die Du suchst!

    Grüße an alle Zend Framework Entwickler. Das Team vom Zend Framework Forum!

    Drupal Agentur

SubFormulare als AccordionContainer und Hauptformular darüber

KnechtRootRecht

New member
Moin,

Mir bereitet im Moment ein kleines Problem ziemliches Kopfzerbrechen...
Ist es Möglich, 3 Formulare (davon 2 als Accordions und 1 darüber) zu generieren?
Die beiden Accordions sind kein Problem, diese funktionieren, nur ich bekomme das andere Formular nicht darüber.
Es soll ungefähr so aussehen:
.accordionform.jpg

Die beiden Accordions erstelle ich als SubForms und füge sie mit ZendX_JQuery hinzu.
Nur bekomm ich es jetzt nicht gebacken noch ein Formular darüber anzuzeigen. Auch nicht wenn ich es als Subformular vor diesen Beiden Accordions zufüge.

Hier die AccordionForm-Klasse:
PHP:
class Library_Form_MultiAccordionContainer extends ZendX_JQuery_Form
{
    public function __construct($mOptions = null) {
        parent::__construct($mOptions);
        
        $this->addPrefixPath('Library_Form_Decorator', '/Library/Form/Decorator', 'decorator');
        
        $this->setAttrib('id', 'mainForm');
        $this->setAttrib('class', 'accordion MiddleBox boxShadow');
        
        $this->setDecorators(array(
            'FormElements',
            array('HtmlTag', array('tag' => 'ul')),
            array('MultiAccordionContainer', array(
                'id' => 'accordionContainer',
            )),
            'Form',
        ));
    }
}
Die AccordionPane-Klasse:
PHP:
<?php
class Library_Form_MultiAccordionPane extends ZendX_JQuery_Form
{
    protected $_sPaneTitle;
    
    public function __construct($mOptions = null) {
        if (is_array($mOptions) && array_key_exists('title', $mOptions)) {
            $this->setPaneTitle($mOptions['title']);
            unset($mOptions['title']);
        }
        
        $this->addPrefixPath('Library_Form_Decorator', '/Library/Form/Decorator', 'decorator');
        
        parent::__construct($mOptions);
        
        $this->setDecorators(array(
            'FormElements',
            array('HtmlTag', array('tag' => 'ul')),
            array('MultiAccordionPane', array('jQueryParams' => array(
                'containerId' => 'mainForm',
                'title'       => $this->getPaneTitle()
            )))
        )); 
        
    }
    
    public function setPaneTitle($sTitle) {
        $this->_sPaneTitle = (string) $sTitle;
        return $this;
    }
    
    public function getPaneTitle() {
        return $this->_sPaneTitle;
    }
}
Im Controller erstelle ich dann den Container:
PHP:
$oMainForm = new Library_Form_MultiAccordionContainer();

foreach ($aOptions as $aOption) {
   $oOptionForm = new App_Form_OptionPane(); /* Kind-Klasse von MultiAccordionPane */
   $oMainForm->addSubForm($oOptionForm, 'option_' . $aOption['id']);
}
So wird mir das Accordion richtig angezeigt.
Nun brauch ich aber noch das Formular darüber, das wird mir aber nicht angezeigt.
Wenn ich die Elemente in die "mainForm" packe, werden sie mir auch nicht angezeigt.
Mache ich einen Fehler mit den Dekoratoren?
 

cream

New member
Falls das Problem noch besteht... (sind ja doch paar Tage vergangen):

Lass dir doch einfach mal die SubForms und Mainform mit var_dump() oder ähnlichem ausgeben. Da siehst Du was es dir "zusammengewürfelt" hat und ob das Formular ggf. fehlt bzw. wie die Decorators aussehen.

Abgesehen davon sieht das so kompliziert aus (hab mit ZendX_jQuery weniger Erfahrung). Kommst Du nicht viel besser, ein ganz normales Formular (aus den ganzen SubForms) ohne Zendx zu erstellen und den jQuery Code selbst einzufügen? jQuery UI - Accordion Demos & Documentation
 
Oben