symfony sfFormでラベルと値を表示するwidget
sfFormで入力画面を作成する場合、各項目はwidgetを設定していきますが、
項目名と設定値を表示するのみのwidgetがありません。
入力させたくないけど、画面には表示したいというケースは結構あると思います。
プラグイン等もなさそうなので、専用のwidgetを作成してみました。
class myWidgetFormInputHiddenShowValue extends sfWidgetForm
{
protected function configure($options = array(), $attributes = array())
{
// デフォルトは'div'タグで表示
$this->addOption('tag', 'div');
$this->setOption('is_hidden', false);
}
public function render($name, $value = null, $attributes = array(), $errors = array())
{
// hiddenタグを作成
$hiddenTag = $this->renderTag('input', array('type' => 'hidden', 'name' =>$name, 'value'=>$value, 'class'=>null));
if($this->getOption('tag'))
{
// 値表示用タグを作成
$content = $this->renderContentTag($this->getOption('tag'), $value, $attributes);
} else {
// タグ指定がなければ設定値を表示
$content = $value;
}
return $content.$hiddenTag;
}
}
オプションの’tag’で表示する際に使用するタグを指定できるようにしています。
デフォルトは’div’タグで表示します。
タグが必要ない場合は、’tag’=>nullと指定すれば値だけを表示します。
○ 以下使用例
$this->widgetSchema[‘name’] = new myWidgetFormInputHiddenShowValue(array(), array(‘class’=>’show_label’));
○出力結果
<div class="show_label">hogehoge</div><input type="hidden" name="content[name]" value="hogehoge" id="content_name_id" />
ソースを見れば、簡単に拡張ができるのがsymfonyの良いところですね。
(もし、デフォルトで出来るのであれば突っ込みお願いします)
この投稿へのトラックバック
トラックバックはありません。
- トラックバック URL
この投稿へのコメント