Php Zend Framework addMultiOption添加自定义参数,如;rel";选择

Php Zend Framework addMultiOption添加自定义参数,如;rel";选择,php,zend-framework,zend-form-select,Php,Zend Framework,Zend Form Select,我使用Zend,我们有一个表单,它通过一系列函数组合在一起。一个特别的addMultiOption,它是从一个DB中拉进来的(我不知道从哪里拉进来的,因为如果我可以修改查询,那会更容易更好。无论如何,这意味着我需要添加一个“rel”属性设置为每个选项/选项,因此我可以通过jquery在该选项上执行任务。当选择该选项时,它不是所有选项,而是一些没有额外功能的选项的rel为0,其中带有操作的选项的rel为“1”这来自数据库so。我试图找出如何在值之外添加额外属性 Zend框架是否支持这一点,如果不支

我使用Zend,我们有一个表单,它通过一系列函数组合在一起。一个特别的addMultiOption,它是从一个DB中拉进来的(我不知道从哪里拉进来的,因为如果我可以修改查询,那会更容易更好。无论如何,这意味着我需要添加一个“rel”属性设置为每个选项/选项,因此我可以通过jquery在该选项上执行任务。当选择该选项时,它不是所有选项,而是一些没有额外功能的选项的rel为0,其中带有操作的选项的rel为“1”这来自数据库so。我试图找出如何在值之外添加额外属性

Zend框架是否支持这一点,如果不支持的话,我如何实现这一点?我在这里找到了一篇我认为很好的文章,但事实证明它不适合我使用addMultiOption($value,$label)我只是将value参数设置为类似的值:

$value = $id . '" ref="' . $ref;
当它呈现时,您会得到:

<option value="<idValue>" ref="<refValue"><labelValue></option>
我将在表单元素定义(在扩展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元素,如

<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>
这是因为optionClasses结果类属性不会像value属性那样被呈现方法转义。

使用addMultiOption($value,$label),我只是将value参数设置为如下值:

$value = $id . '" ref="' . $ref;
当它呈现时,您会得到:

<option value="<idValue>" ref="<refValue"><labelValue></option>
我将在表单元素定义(在扩展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元素,如

<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>

这是因为optionClasses结果类属性不会像value属性那样被呈现方法转义。

加载页面时,您可以通过jquery添加ref标记吗?请检查这个问题,我可以,但这需要我对select中的选项运行附加查询,然后在中运行选项选择以查看其中是否有匹配条件,然后向其中添加我需要的内容。总的来说,尝试避免查询过程,因为查询可能会得到非常大的结果该链接不幸是其中一个对我不起作用的链接。我在addOption中遇到一个错误,无法追溯问题。您可以添加吗页面加载时通过jquery的ref标记?检查这个问题,我可以,但这需要我对select中的选项运行一个附加查询,然后向下运行select中的选项,查看其中是否有匹配的条件,然后向它们添加我需要的内容。总的来说,我试图避免将查询过程作为查询可以在结果中获得较大的静态链接不幸的是,该链接是其中一个对我不起作用的链接。我在addOption中得到一个错误,无法追溯该问题。实际上,这不起作用。该值被转义,并被视为一个值,而不是值和ref属性。但仍将继续执行此操作,并将更新该选项一旦类方法起作用,尝试更改值使用方式的第一次尝试就是不起作用的。我希望这些评论不会让人混淆……我将列出一个示例,我可以添加到答案中,以试图让事情变得清楚。非常感谢!这帮了大忙。避免了我创建自定义元素和查看helperActual很遗憾,这不起作用。值被转义,并被视为一个值,而不是值和ref属性。尽管如此,仍将继续执行此操作,并将进行更新。OptionClass方法确实起作用,尝试更改值使用方式的第一次尝试是不起作用的。我希望这些注释不会使事情混淆…我将把它们放在一起这是一个我可以添加到答案中的示例,以使问题变得清晰。非常感谢!这对我帮助很大。使我免于创建自定义元素和视图帮助器