0

皆さんおはよう、

ZF2 で問題が発生しています。このフレームワークは初めてなので、ご容赦ください.... XDD 関数 formCollection() を使用してフォームを生成したかったのですが、フォーム コレクション クラスをカスタマイズして、ラッパー ul を追加しました。それは大丈夫です、今私の問題は、要素をliの内側にラップするようにフォーム要素をカスタマイズすると、問題はラベルがliタグの外側に残ることです。それを解決する方法はありますか? formRow() を使用したり、html を直接記述したりせずに?

FormCollection.php

namespace Users\View\Helper;

use Zend\Form\ElementInterface;
use Zend\Form\View\Helper\FormCollection as BaseFormCollection;

class FormCollection extends BaseFormCollection {
    public function render(ElementInterface $element) {
        return '<ul>'. parent::render($element).'</ul>;
    }

}

FormElement.php

namespace Users\View\Helper;

use Zend\Form\ElementInterface;
use Zend\Form\View\Helper\FormElement as BaseFormElement;

class FormElement extends BaseFormElement {
    public function render(ElementInterface $element) {
       return  '<li>'. parent::render($element).'</li>';
    }
}

結果の HTML

<form name="Register" method="post" action="/">
<ul>
    <label for="name">Full Name</label>
    <li>
        <input type="text" value="" name="name">
    </li>
    <label for="password">Password</label>
    <li>
         <input type="password" value="" required="required" name="password">
    </li>
</ul>

それは文字通り私を狂わせており、おそらく修正するのは簡単なことですT_T

ありがとう。

4

2 に答える 2

2

<li><label></label><input></li>新しいヘルパー FormLabel.php を作成する必要があります。

namespace Users\View\Helper;

use Zend\Form\View\Helper\FormLabel as BaseFormLabel;

class FormLabel extends BaseFormLabel{

    public function openTag($attributesOrElement = null){
        return '<li>'.parent::openTag($attributesOrElement); 
    }
}

正しいラップ送信のために FormElement.php を更新します。

namespace Users\View\Helper;

use Zend\Form\ElementInterface;
use Zend\Form\View\Helper\FormElement as BaseFormElement;

class FormElement extends BaseFormElement{

    public function render(ElementInterface $element){
        if($element->getAttribute('type') == 'submit'){
            return '<li>'.parent::render($element).'</li>';
        }else{
            return parent::render($element).'</li>';
        }
    }
} 

<li><label></label></li><li><input></li>FormLabel.php を作成するだけです。

namespace Users\View\Helper;

use Zend\Form\View\Helper\FormLabel as BaseFormLabel;

class FormLabel extends BaseFormLabel{

    public function openTag($attributesOrElement = null){
        return '<li>'.parent::openTag($attributesOrElement); 
    }

    public function closeTag(){
        return '</label></li>';    
   }
}

あなたの FormElement.php を更新しなくても

このように考えてください... =)それが助けになることを願っています。

于 2013-12-18T20:29:56.683 に答える