2009-07-28 19 views
10

W mojej formie mam ten kod;Jak usunąć dekorator etykiet z przycisku przesyłania

// Add the submit button 
$element = $this->addElement('submit', 'submit', array(
    'ignore' => true, 
    'label' => 'Add new material' 
)); 
$element->removeDecorator('label'); 

Jednak formularz nadal renderuje się z elementem etykiety między tagami.

Co robię źle?

Odpowiedz

3

Uważam, że w rozmowie z removeDecorator rozróżniana jest wielkość liter. Np. Powinien on być "Label" # zanotować wielką literę 'L'.

+0

Próbowałem, że to nie robi żadnej różnicy. Znalazłem to w innej odpowiedzi, ale nie wydaje się właściwe, aby zrobić to w ten sposób, ponieważ nie jest tak, jak dokumentacja opisuje, jak to zrobić. $ element-> removeDecorator ('DtDdWrapper') -> addDecorator ('HtmlTag', array ('tag' => 'dd')); Jednak nawet usunięcie elementu

z html nie rozwiązało mojego ogólnego problemu polegającego na tym, że nie mogłem umieścić przycisku przesyłania po lewej stronie. –

+0

Więc, zmieniłeś to: $ element-> removeDecorator ('label'); do tego: $ element-> removeDecorator ('Label'); i nadal nie działa? Jeśli tak być może, spróbuj var_dump (getDecorators()) i chodźmy stamtąd. – g33kz0r

11

Funkcja addElement zwraca odniesienie do bieżącego formularza, nie do ostatnio dodanego elementu.

Można spróbować to:

$form = new Zend_Form(); 
$form->addElement('submit', 'submit', array(
    'ignore' => true, 
    'label'  => 'Add new material' 
)); 

$element = $form->getElement('submit'); 
$element->removeDecorator('label'); 
+0

Również Zend_Db_Element nie ma funkcji addElement Zend_Db_Form ma – Erik

1

Aby przezwyciężyć tę niedogodność mam określającą ręcznie przez dekoratorów dla mojego elementu ...

$details->addElement('text', 'in_year', array(
    'decorators'=>array(
    'ViewHelper', 
    array('HtmlTag', array('tag' => 'span')), 
    ) 
)); 

Można oczywiście zdefiniować własne tagi. W tym przykładzie inicjuję tylko dekorator "ViewHelper". Jeśli chcę do zainicjowania "label" dekorator zrobiłbym:

$details->addElement('text', 'in_year', array(
    'decorators'=>array(
    'ViewHelper', 
    'Label', 
    array('HtmlTag', array('tag' => 'span')), 
    ), 
    'attribs' => array('class' => 'required validate-digits') 
)); 

Mam nadzieję, że to ma sens ...: o)

18

Ten pracował dla mnie:

$this->addElements(array( 
    new Zend_Form_Element_Submit('submit', array( 
    'label' => 'Save' 
)) 
)); 
$element = $this->getElement('submit'); 
$element->removeDecorator('DtDdWrapper'); 

zrobiłem print_r($element);, aby dowiedzieć się, jakie dekoratory istnieją dla $element.

Powiązane problemy