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
この投稿へのコメント