プロジェクトで Zend Framework を使用しています。次のように、フォームに説明/メモを追加したい
fields marked by * are mandatory
しかし、フォームに説明を追加する方法と、デコレータで使用する方法がわかりませんでした。
どんな助けでも大歓迎です。ありがとう。
プロジェクトで Zend Framework を使用しています。次のように、フォームに説明/メモを追加したい
fields marked by * are mandatory
しかし、フォームに説明を追加する方法と、デコレータで使用する方法がわかりませんでした。
どんな助けでも大歓迎です。ありがとう。
次の 2 つのオプションがあります。
Zend_Form_Element
してカスタム要素を作成する生の HTML コードの一部をフォームの要素の前後だけでなく、それらの間に追加することは非常に一般的であるため、私は後者を使用します。
次のようにする必要があります。
class My_Form_Element_Raw extends Zend_Form_Element
{
protected $raw_html;
public function setRawHtml($value)
{
$this->raw_html = $value;
return $this;
}
public function getRawHtml()
{
return $this->raw_html;
}
public function render()
{
// you can use decorators here yourself if you want, or wrap html in container tags
return $this->raw_html;
}
}
$form = new Zend_Form();
// add elements
$form->addElement(
new My_Form_Element_Raw(
'my_raw_element',
array('raw_html' => '<p class="highlight">fields marked by * are mandatory</p>')
)
);
echo $form->render();
拡張するときは、メソッドZend_Form_Element
をオーバーライドする必要はありません。Zend は内部的にset*とget*および保護されたプロパティを使用して、この場合のように要素オプションを検出します
。また、プロパティに名前を付けると、それぞれ 'raw_html' と 'rawHtml' の両方のオプションが受け入れられます。setOption/s
getOption/s
protected $raw_html;
public function setRawHtml($value)
public function getRawHtml()
$raw_html
フォームにテキストを追加する最も簡単な方法は、適切な html をページ ビューに追加することです。
<div>
<h4>fields marked by * are mandatory</h>
<?php echo $this->form ?>
</div>
または、viewScript デコレーターを使用して、フォーム全体のエクスペリエンスを制御します。
<article class="login">
<form action="<?php echo $this->element->getAction() ?>"
method="<?php echo $this->element->getMethod() ?>">
<table>
<tr>
<th>Login</th>
</tr>
<tr>fields marked by * are mandatory</tr>
<tr>
<td><?php echo $this->element->name->renderViewHelper() ?></td>
</tr>
<tr>
<td><?php echo $this->element->password->renderViewHelper() ?></td>
</tr>
<tr>
<td><?php echo $this->element->submit ?></td>
</tr>
</table>
</form>
</article>
ただし、 を使用してフォームに説明を追加し、$form->setDescription()
その説明を でレンダリングできますecho $this->form->getDescription()
。これらのメソッドは、フォーム レベルではなく、要素レベルで set および getTag() と共に使用する方がよいでしょう。
アスタリスクの手がかりを提供するには、css を使用します。
dt label.required:before {
content: "* ";
color: #ff0000;
}
必要に応じて、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'))
);
}
これらは私が通常使用する要素のデコレーターであり、* のプレフィックスと説明デコレーターも含まれています。
次にコードを使用します。
$element->setDescription('fields marked by * are mandatory');
1 つの要素に説明を追加します。その後、下部のどこかに表示されるように説明をスタイルできます。これが役立つことを願っています。よい一日を。