Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 对Nette表单中的链接方法设置条件验证_Php_Forms_Nette - Fatal编程技术网

Php 对Nette表单中的链接方法设置条件验证

Php 对Nette表单中的链接方法设置条件验证,php,forms,nette,Php,Forms,Nette,我试图使用存储在数据库中的字段类型来呈现表单。因此,这取决于该字段是电子邮件还是简单的文本输入;验证类型将有所不同,如下所示: // For textbox $form->addText($field['name'], $field['label']) ->setRequired('Enter your ' . $field['label']); // For Email $form->addText($field['name'], $field['l

我试图使用存储在数据库中的字段类型来呈现表单。因此,这取决于该字段是电子邮件还是简单的文本输入;验证类型将有所不同,如下所示:

// 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');
如果只有一个字段,我可以用If条件来做,但会有更多字段,这样做似乎不切实际。由于它是一个链式方法,我不能通过放置中间if语句来破坏这些方法,如下所示:

$form->addText($field['name'], $field['label'])
      ->setRequired('Enter your email');
    if ($field['type'] == ['email']) {
        $form->addRule(FORM::EMAIL, 'Enter a valid email');
    }   

有没有比为每一组规则使用条件语句更好的方法来实现这一点

您正在对
$form
对象本身调用
addRule()
,而不是
$form->addText()调用的返回值

$name = $form->addText($field['name'], $field['label'])
if ($field['type'] == ['email']) {
    $name->setRequired('Enter your email')
    ->addRule(FORM::EMAIL, 'Enter a valid email');
}

您正在对
$form
对象本身调用
addRule()
,而不是
$form->addText()调用的返回值

$name = $form->addText($field['name'], $field['label'])
if ($field['type'] == ['email']) {
    $name->setRequired('Enter your email')
    ->addRule(FORM::EMAIL, 'Enter a valid email');
}