2

これが私のコードです

    プライベート $elementDecorators = 配列(
        'ビューヘルパー',
        'エラー',
        array(array('data' => 'HtmlTag'), array('tag' => 'td')),
        array('Label', array('tag' => 'td','class'=>'blue-color','placement'=>'prepend')),
        array(array('row' => 'HtmlTag'), array('tag' => 'tr')),

    );
     パブリック関数 init()
     {
      $username = new Zend_Form_Element_Text('username',array(
            'decorators' =>$this->elementDecorators,
            'ラベル' =>'ユーザー名',
            「必須」=>真、
            'span' =>array('class'=>'validation','id'=>'unameInfo'),

        ));
    }

       $this->addElements(array(
                        $ユーザー名
        ));
        $this->setDecorators(配列(
           'フォームエレメント',
            array('HtmlTag',
                array('tag'=>'table', 'width' => '100%')
                )、
               '形'
        ));

上記のコードに対して作成されたフォームは次のとおりです

   <tr>
       <td id="username-label"><label for="username" class="blue-color required">Username</label></td>
       <td><input type="text" name="username" id="username" value="" span="Array"></td>
   </tr>

次のhtmlが欲しい

<tr>
           <td id="username-label"><label for="username" class="blue-color required">Username</label></td>
           <td>
               <input type="text" name="username" id="username" value="" span="Array">
               <span class="validation" id="userinfo"></span>
           </td>
</tr>

上記の zend フォーム コードにスパン タグを追加するにはどうすればよいですか?

前もって感謝します

4

2 に答える 2

0

以下のようにしてみてください、

...
     $submit = new Zend_Form_Element_Submit('submit', array(
                    'label' => 'Submit Button',
                    'class' => 'form-submit',
                    'decorators' => array(
                        'ViewHelper',
                    ),
                ));

        //$submit->removeDecorator('Label');
        $this->addElement($submit);

        $reset = new Zend_Form_Element_Reset('reset', array(
                    'label' => 'Reset Button',
                    'class' => 'form-reset',
                    'decorators' => array(
                        'ViewHelper',
                    ),
                ));
        //$submit->removeDecorator('Label');
        $this->addElement($reset);

        $this->addDisplayGroup(array('submit', 'reset',), 'submitButtons', array(
            'order' => 10,
            'decorators' => array(
                'FormElements',
                array(
                    array('data' => 'HtmlTag'),
                    array('tag' => 'td','class'=>'move_td')
                ),
                array(
                    array('row' => 'HtmlTag', 'class' => 'element'),
                    array('tag' => 'tr')
                )
            ),
        ));
...

これにより、以下のようなコードが生成されます。

...
<td class="move_td">

<input type="submit" class="form-submit" value="Submit Button" id="submit" name="submit">

<input type="reset" class="form-reset" value="Reset Button" id="reset" name="reset">
</td>
...

更新しました

以下のコードを使用してスパンを生成します

$this->addElement(
        'hidden',
        'dummy',
        array(
            'required' => false,
            'ignore' => true,
            'autoInsertNotEmptyValidator' => false,
            'decorators' => array(
                array(
                    'HtmlTag', array(
                        'tag'  => 'span',
                        'id'   => 'span-id',
                        'class' => 'span-class'
                    )
                )
            )
        )
    );
    $this->dummy->clearValidators(); 

ここで、addDisplayGroup 関数を使用して html 要素をグループ化する必要があります。

于 2012-12-20T12:16:04.323 に答える
0

AnyMarkupデコレーターを使用できます。

$username  = new Zend_Form_Element_Text('username',array(
     'decorators'    => array(
        'ViewHelper',
         array('AnyMarkup', array('markup' => 'your-markup-here', 'placement' => 'append')),
        'Errors',
        array(array('data' => 'HtmlTag'), array('tag' => 'td')),
        array('Label', array('tag' => 'td','class'=>'blue-color','placement'=>'prepend')),
        array(array('row' => 'HtmlTag'), array('tag' => 'tr')),
     ),
    'label'    => 'Username',
    'required' => true,
    'span'     => array('class'=>'validation','id'=>'unameInfo'), 
    // actually, this last 'span' entry strikes me as odd
));

インスタンスを作成するのではなく、短い形式 (上記のように) を使用してデコレーターを要素に追加するには、デコレーターのパス/プレフィックスを次のように要素に登録する必要があります。

$username->addPrefixPath('My_Decorator_', APPLICATION_PATH . '/../library/My/Decorator', Zend_Form_Element::DECORATOR);

以下を使用して、そのプレフィックス/パスをすべての (現在定義されている) 要素に追加できます。

$form->addElementPrefixPath($prefix, $path)

方法。

于 2012-12-20T13:06:44.940 に答える