在同一页面上显示同一模型的多种形式时遇到问题。问题是使用 NameFormat,字段具有相同的 ID:
$this->widgetSchema->setNameFormat('display[%s]');
将显示
<form class="update_display_form" id="update_display_0" action="/iperf/web/frontend_dev.php/update_display" method="post">
<input type="checkbox" name="display[displayed]" checked="checked" id="display_displayed" />
<label for="display_displayed">test</label>
</form>
<form class="update_display_form" id="update_display_1" action="/iperf/web/frontend_dev.php/update_display" method="post">
<input type="checkbox" name="display[displayed]" checked="checked" id="display_displayed" />
<label for="display_displayed">truc</label>
</form>
如果您单击第二个标签,它将激活第一个复选框 所以我想我可以使用对象 id 使它们独一无二:
$this->widgetSchema->setNameFormat('display'.$this->getObject()->getId().'[%s]');
但是我无法处理请求,因为我不知道参数的名称。
我发现最好的选择是设置一个 ID :
$this->widgetSchema['displayed']->setAttributes(array("id" => "display".$this->getObject()->getId() ));
但后来我完全失去了标签和复选框之间的联系。
如果我可以更改标签的“for”属性,问题就会得到解决。有人知道该怎么做吗?或任何其他选择?