自作のsfFormの派生クラスでsfWidgetFormInputCheckbox
を使ってCheckboxの右隣にlabelを出力したかったんだけどよく分からない。
フィールドごとにrenderすれば当然できるけど、sfForm->render()
だけで済ませたい。いろいろ調べたけど結局よくわらかないのでwidgetつくった・・・
class sfWidgetFormInputCheckboxWithLabel extends sfWidgetFormInputCheckbox
{
public function __construct($options = array(), $attributes = array())
{
$this->addOption('with_label');
parent::__construct($options, $attributes);
}
public function render($name, $value = null, $attributes = array(), $errors = array())
{
return parent::render($name, $value, $attributes, $errors)
.$this->renderContentTag('label',$this->getOption('with_label'),array('for'=>$this->generateId($name, null)))
;
}
}
あとはsfForm
の中とかでwith_label
を指定して使う。
$this->setWidgets(array(
'foo'=> new sfWidgetFormInputCheckboxWithLabel(array('with_label'=>'右に載せるラベルのテキスト')),
));
個別にwidgetのrenderの書式って拡張できないのだろうか?