Doğrulama sonra kaybolan özel Zend_Form eleman

0 Cevap php

Bana benim şeklinde keyfi bir konuma metin yerleştirmek için olanak sağlayan özel bir form öğesi oluşturduk:

<?php 

class Plano_Form_Element_Note extends Zend_Form_Element_Xhtml
{
    public $helper = 'formNote';

    /**
     * Default decorators
     *
     * @return void
     */
    public function loadDefaultDecorators()
    {
        if ($this->loadDefaultDecoratorsIsDisabled()) {
            return;
        }

        $decorators = $this->getDecorators();
        if (empty($decorators)) {
            $this->addDecorator('ViewHelper')
                 ->addDecorator('Errors')
                 ->addDecorator('Label')
                 ->addDecorator(array('row' => 'HtmlTag'), array('tag' => 'div', 'class' => 'form-row clearfix'));
        }
    }       
}

This works like a charm, but as soon as I hit $form->isValid() the element turns up empty and only the wrapper shows:

<div class="form-row clearfix"></div>

Elementler alt formlar (aşağıda benim form sınıfında yöntemi) kullanılarak eklenir:

/**
 * Setup form elements and generate subforms
 *  
 * @return Event_Form_Feedback_Enter
 */
protected function setupForm()
{
    $partMapper = new Event_Model_FeedbackPart_Mapper();
    $parts = $partMapper->fetchByFeedbackId($this->getFeedback()->getId(), array('order ASC', 'id DESC'));
    foreach ($parts as $part)
    {
        switch ($part->getType())
        {
            case Event_Model_FeedbackPart::TYPE_TEXT:
                $subform = new Event_Form_Feedback_Enter_Text();
                break;
            case Event_Model_FeedbackPart::TYPE_QUESTION_OPEN:
                $subform = new Event_Form_Feedback_Enter_Question();
                break;
            case Event_Model_FeedbackPart::TYPE_QUESTION_MC:
                $subform = new Event_Form_Feedback_Enter_MultipleChoiceQuestion();
                break;
        }

        $subform->setup($part);
        $this->addSubForm($subform, 'part-' . $part->getId());
    }

    $this->addSubmit();
}

... Ve burada gerçek formu sınıfında eleman yaratılmasıdır (Event_Form_Feedback_Enter_Text):

protected function setupForm()
{
    $element = new Plano_Form_Element_Note('description');
    $element->setValue($this->getPart()->getDescription());
    $this->addElement($element);
}

0 Cevap