同じモデルの複数のフォームを同じページに表示する際に問題が発生します。問題は、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>
そして、2 番目のラベルをクリックすると、最初のチェックボックスが有効になり ます。オブジェクト ID を使用してそれらを一意にすることができると考えました。
$this->widgetSchema->setNameFormat('display'.$this->getObject()->getId().'[%s]');
しかし、パラメータの名前がわからないため、リクエストを処理できません。
私が見つけた最良のオプションは、 ID を設定することでした:
$this->widgetSchema['displayed']->setAttributes(array("id" => "display".$this->getObject()->getId() ));
しかし、ラベルとチェックボックスの間の接続が完全に失われます。
ラベルの「for」属性を変更できれば、問題は解決します。誰かがそれを行う方法を知っていますか? または他のオプションですか?