Я пытаюсь отобразить форму с помощью Nette\Forms, где типы полей хранятся в базе данных. Поэтому в зависимости от того, является ли поле электронным письмом или простым вводом текста; тип проверки будет отличаться следующим образом:Установить условную проверку на цепочку методов в формах Nette
// 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');
Если бы это было только одно поле, я мог бы сделать это с а, если условие, но будет намного больше полей, и это только кажется непрактичным, чтобы сделать это. И так как это прикован метод, который я не могу сломать методы, поставив промежуточным, если заявление, как следующее:
$form->addText($field['name'], $field['label'])
->setRequired('Enter your email');
if ($field['type'] == ['email']) {
$form->addRule(FORM::EMAIL, 'Enter a valid email');
}
Есть ли лучший способ для достижения этой цели, чем использование условных операторов для каждого набора правил?