管理者側には、以下の2つのフィールドを持つXMLフォームがあります。両方のフィールドがrequired=true
としてマークされています
<field name="field1"
type="text"
label="Field1"
required="true"/>
<field name="field2"
type="text"
label="Field2"
required="true"/>
管理フォーム(default.php)では、フィールドは以下のように設定されます。 field2
は、特定の条件でのみ必要です。
echo $this->form->renderField('field1');
if (condition){
echo $this->form->renderField('field2');
}
このフォームが送信されると、サーバー側の検証により、フォームの表示内容に関係なく両方のフィールドが検証されます。検証ではフォームの内容のみが検証されるように設定したいと思います。
私はなんとかsetFieldAttributeを介してこれを達成しました。 XMLフォームでfield2
必須プロパティを削除し、以下のようにフォームで動的に設定しました。
echo $this->form->renderField('field1');
if (condition){
$this->form->setFieldAttribute('field2','required','required');
echo $this->form->renderField('field2');
}
これが正しいアプローチかどうかはわかりませんが、うまくいきます...