我使用 Zend,我们有一个通过一系列函数组合在一起的表单。一个特别的 addMultiOption,它是从数据库中提取的(我不知道,因为如果我可以改变查询,那会更容易和更好。无论如何,我需要添加一个“rel”归因于每个选项 /选项将有一个“一”的相对值,这来自数据库所以。我试图弄清楚如何在值之外添加额外的属性
Zend 框架是否支持这一点,如果不支持,我该如何实现?我发现我之前认为这是一篇关于它的好帖子,但事实证明它对我不起作用
我使用 Zend,我们有一个通过一系列函数组合在一起的表单。一个特别的 addMultiOption,它是从数据库中提取的(我不知道,因为如果我可以改变查询,那会更容易和更好。无论如何,我需要添加一个“rel”归因于每个选项 /选项将有一个“一”的相对值,这来自数据库所以。我试图弄清楚如何在值之外添加额外的属性
Zend 框架是否支持这一点,如果不支持,我该如何实现?我发现我之前认为这是一篇关于它的好帖子,但事实证明它对我不起作用
使用 addMultiOption($value,$label) 我只是将 value 参数设置为:
$value = $id . '" ref="' . $ref;
当它渲染你得到:
<option value="<idValue>" ref="<refValue"><labelValue></option>
希望这可以帮助....
好的,值被转义了,但 optionClasses 在添加 addMultiOptions(val,lable) 的循环中没有这样我做这样的事情:
$optionClasses[<val>] = 'ref_' . <val> . '" ref="' . <ref>;
然后在循环之后只做一个 setAttrib('optionClasses',$optionClasses)
这实际上有效......
因此,这是一个示例,我将定义一个数组,该数组可能是来自数据库查询的记录集,其中包含我们将要使用的三个部分;id,代码和偏移量
$records = array( array('id' => 1, 'code' => 'Code 1', 'offset' => 4),
array('id' => 2, 'code' => 'Code 2', 'offset' => 5),
array('id' => 3, 'code' => 'Code 3', 'offset' => 6)
);
我将在表单元素定义中使用它(在扩展 Zend_Form 的类中)进行选择,其中选项有一个名为“offset”的属性,该属性将具有数组中的“offset”值
$e = $this->createElement('select', 'code_id');
$e->setLabel('Event Type:')
->setAttrib('size', 1);
$optionClasses = array();
foreach ($records as $record) {
$optionClass = 'xcode_' . $record['id'] . '" xoffset="' . $record['offset'];
$optionClasses[$record['id']] = $optionClass;
$e->addMultiOption($record['id'],$record['code']);
}
$e->setAttrib('optionClasses', $optionClasses);
$this->addElement($e);
当它被渲染时,它会产生一个选择元素,如
<select name="code_id" id="code_id">
<option value="1" class="xcode_1" xoffset="4" selected="selected">Code 1</option>
<option value="2" class="xcode_2" xoffset="5">Code 2</option>
<option value="3" class="xcode_3" xoffset="6">Code 3</option>
</select>
然后您可以使用 jQuery 获得所选选项的偏移量
var xoffset = $("#code_id").find("option:selected").attr("xoffset");
这是有效的,因为 optionClasses 结果类属性不会像 value 属性那样被渲染方法转义。