web-dev-qa-db-ja.com

表示されているフィールドに対してのみフォーム検証を設定する方法

管理者側には、以下の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');
}

このフォームが送信されると、サーバー側の検証により、フォームの表示内容に関係なく両方のフィールドが検証されます。検証ではフォームの内容のみが検証されるように設定したいと思います。

1
Malaiselvan

私はなんとかsetFieldAttributeを介してこれを達成しました。 XMLフォームでfield2必須プロパティを削除し、以下のようにフォームで動的に設定しました。

echo $this->form->renderField('field1');
if (condition){
  $this->form->setFieldAttribute('field2','required','required');
  echo $this->form->renderField('field2');
}

これが正しいアプローチかどうかはわかりませんが、うまくいきます...

2
Malaiselvan