在 Zend Framework 中,我试图创建一个选择元素,如果用户只能选择一个项目,它将自动变成隐藏元素。如果它具有多个值,我希望它的行为就像一个 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 . '>';
}