2009-07-28 13 views
10

私のフォームにはこのコードがあります。送信ボタンからラベルデコレータを削除する方法

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

ただし、タグの間にラベル要素が表示されます。

私は間違っていますか?

答えて

3

removeDecoratorの引数は大文字と小文字を区別します。つまり、"Label"#大文字の'L'を書きます。

+0

私は何の違いもありませんでした。 私はこれを別の答えで見つけましたが、ドキュメンテーションがどのようにそれを行うかを説明する方法ではないので、このようにするのは正しいとは思われません。 => 'addDecorator(' HtmlTag '、array(' tag '=>' dd ')); $ this-> removeDecorator(' DtDdWrapper ') - > addDecorator(' HtmlTag '、array(' tag '=>' dd ')); しかし、

要素をhtmlから削除しても、送信ボタンを左に置くことができないという全体的な問題は解決しませんでした。 –

+0

これを変更しました。$ element-> removeDecorator( 'label');これを$ element-> removeDecorator( 'Label')に変更します。それはまだ動作しませんでしたか?その場合、おそらくvar_dump(getDecorators())を試してみましょう。 – g33kz0r

11

関数addElementは、最後に追加された要素ではなく、現在のフォームへの参照を返します。

あなたはこの試みることができる:あなたはもちろん、独自のタグを定義することができます

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

...私は手動で私の要素のデコレータを定義しています。この迷惑を克服するために

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

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

また Zend_Db_Elementには機能がありませんaddElement Zend_Db_Formには – Erik

1

を。この例では、「ViewHelper」デコレータのみを初期化します。私は、 "ラベル" デコレータを初期化したい場合、私はどうなる:

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

を、私は、これは理にかなって願っています...:O)

18

これは私の仕事:

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

私がしましたprint_r($element);$elementのデコレータは何ですか?

関連する問題