フィールド タイプがデータベースに格納されているNette\Formsを使用してフォームをレンダリングしようとしています。したがって、フィールドが電子メールか単純なテキスト入力かによって異なります。検証タイプは次のように異なります。
// For textbox
$form->addText($field['name'], $field['label'])
->setRequired('Enter your ' . $field['label']);
// For Email
$form->addText($field['name'], $field['label'])
->setRequired('Enter your email')
->addRule(FORM::EMAIL, 'Enter a valid email');
フィールドが 1 つだけの場合は、aa if 条件で実行できますが、さらに多くのフィールドが存在するため、これを実行するのは実際的ではないようです。そして、これはチェーンされたメソッドであるため、次のような中間の if ステートメントを配置してメソッドを壊すことはできません。
$form->addText($field['name'], $field['label'])
->setRequired('Enter your email');
if ($field['type'] == ['email']) {
$form->addRule(FORM::EMAIL, 'Enter a valid email');
}
一連のルールごとに条件ステートメントを使用するよりも、これを達成するためのより良い方法はありますか?