Zend Framework では、ユーザーが選択できる項目が 1 つしかない場合に自動的に非表示の要素に変わる select 要素を作成しようとしています。複数の値がある場合は Select 要素と同じように動作させたいので、次を使用してクラスを拡張する必要があることがわかっています。
class Application_Form_Element_SingleSelect extends Zend_Form_Element_Select{}
しかし、隠し要素として出力する方法がわかりません。
アップデート
これは私が思いついた最終的なコードでした:
public function render(Zend_View_Interface $view = null){
$options = $this->getMultiOptions();
// check to see if there is only one option
if(count($options)!=1){
// render the view
return parent::render($view);
}
// start building up the hidden element
$returnVal = '<input type="hidden" name="' . $this->getName() . '" ';
// set the current value
$keys = array_keys($options);
$returnVal .= 'value="' . $keys[0] . '" ';
// get the attributes
$attribs = $this->getAttribs();
// check to see if this has a class
if(array_key_exists('class', $attribs)){
$returnVal .= 'class="' . $attribs['class'] . '" ';
}
// check to see if this has an id
if(array_key_exists('id', $attribs)){
$returnVal .= 'id="' . $attribs['id'] . '" ';
} else {
$returnVal .= 'id="' . $this->getName() . '" ';
}
return $returnVal . '>';
}