Zend_Form_Decorator_Label の使用について質問があります。フォーム要素が必要なときに次の結果を得るには、Label-text * を取得する必要があります。最も再利用可能な方法でそれを実現するにはどうすればよいでしょうか?
新しいデコレータを作成するためですか、それとも zend_View_helper_FormLabel をオーバーライドするためですか? 多分それを達成する他の方法がありますか?
どんな助けでも感謝します。
Zend_Form_Decorator_Label の使用について質問があります。フォーム要素が必要なときに次の結果を得るには、Label-text * を取得する必要があります。最も再利用可能な方法でそれを実現するにはどうすればよいでしょうか?
新しいデコレータを作成するためですか、それとも zend_View_helper_FormLabel をオーバーライドするためですか? 多分それを達成する他の方法がありますか?
どんな助けでも感謝します。
デコレーターを作成するときに、次のオプションのいずれかを追加できます。
コード例:
$elementDecorators = array(
'ViewHelper',
array('Label', array('requiredSuffix' => ' *')),
);
$userName = new Zend_Form_Element_Text('userName');
$userName->setDecorators($elementDecorators);
$userName->setLabel('User Name');
または、既存のデコレーターにサフィックス/プレフィックスを明示的に設定することもできます。
$userName->getDecorator('Label')->setReqSuffix(' *');
$userName->getDecorator('Label')->setOptSuffix('(Optional) ');
Label デコレーターは、必要に応じて指定されたフォーム入力要素に添付されrequired
た要素に CSS クラスを追加するため、CSSセレクターと宣言<label>
を使用して記号 (アスタリスクなど) を追加することができました。:after
content()
label.required:after {
content: "*";
}
しかし、適切な間隔を設定したり、アスタリスクを太字や希望の色でレンダリングしたりするのは難しい場合があることがわかりました。その結果、CSS を使用してラベル自体を太字でレンダリングするように頼ることがよくあります。または別の色で、フォームの上部または下部に凡例(「太字/赤のフィールドが必要です」など)を追加します(多くの場合、独自のカスタム凡例デコレーターを作成しますが、ビュースクリプト自体に追加することもあります)。
class FormDecorators {
public static $simpleElementDecorators = array(
array('ViewHelper'),
array('Label', array('tag' => 'span', 'escape' => false, 'requiredPrefix' => '<span class="required">* </span>')),
array('Description', array('tag' => 'div', 'class' => 'desc-item')),
array('Errors', array('class' => 'errors')),
array('HtmlTag', array('tag' => 'div', 'class' => 'form-item'))
);
}
そして、使用する要素について
$elem->setDecorators(FormDecorators::$simpleElementDecorators)
ラベル配列に「requiredPrefix」パラメータで必要なプレフィックスを追加しました。
array('Label', array('tag' => 'span', 'escape' => false, 'requiredPrefix' => '<span class="required">* </span>')),