Sam と Cellulosa の応答は非常に優れたソリューションですが。
ZF2 フレームワークが進歩するにつれて、これらがスケーラブルでなくなるのではないかと心配しています。Zend\Form\View\Helper\FormLabel を拡張しているにもかかわらず、重複する __invoke メソッドに多くのコードがあります。フレームワークと元のヘルパーに変更が加えられると、元の __invoke メソッドの変更を複製するために、新しいフォーム ビュー ヘルパーを常に更新する必要があります。
より簡単な解決策は、コードの重複を避けるために、提供された引数を使用して parent::__invoke() を ViewHelper に呼び出すことです。
だから、ここに解決策があります:
Application/src/Application/Form/View/Helper/RequiredMarkInFormLabel.php で ViewHelper を作成します。
<?php
namespace Application\Form\View\Helper;
use Zend\Form\View\Helper\FormLabel as OriginalFormLabel;
use Zend\Form\ElementInterface;
/**
* Add mark (*) for all required elements inside a form.
*/
class RequiredMarkInFormLabel extends OriginalFormLabel
{
/**
* Invokable
*
* @return str
*/
public function __invoke(ElementInterface $element = null, $labelContent = null, $position = null)
{
// invoke parent and get form label
$originalformLabel = parent::__invoke($element,$labelContent,$position);
// check if element is required
if ($element->hasAttribute('required')) {
// add a start to required elements
return '<span class="required-mark">*</span>' . $originalformLabel;
}else{
// not start to optional elements
return $originalformLabel;
}
}
}
Application/config/module.config.php で ViewHelper を忘れずに登録してください。
'view_helpers' => array(
'invokables'=> array(
'formlabel' => 'Application\Form\View\Helper\RequiredMarkInFormLabel'
)
),