symfonyでsfWidgetFormInputCheckboxの隣にlabelを出力する

自作の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の書式って拡張できないのだろうか?

人見知りソフトウェアエンジニアです。ビジュアル系、お笑い、Pixarが好き。勢いで吉本超合金おたけびBOTを作った。オールザッツ漫才が放送されない東京在住。

趣味や日常からアウトプットの場としてブログを書いています。自作のWordPressプラグインにGitHub Flavored MarkdownAmazonJSなど。