提交失败后的 Silverstripe 表单图像验证

Silverstripe form image validation after submit failed

我在处理表单提交后的图像验证时遇到了一点问题。有我的表单提交功能:

public function FormAjouterSubmit($data, $form) {

    ....

    Session::clear("PageAuteur.FormAjouterSubmit");

    $texte = "Veuillez remplir ce champ";

    if (!$data['ImageID']) {
        Session::set("PageAuteur. FormAjouterSubmit", $data);
        $form->addErrorMessage('Image', $texte, 'bad');
        return $this->redirectBack();
    }   

    ....

}

我已经尝试了 !$data['ImageID'] 和 !$data['Image'] 以及表单 return 返回并清除我的会话数据。我做错了什么?

您可以使用 RequiredFields 来验证所需的 form-fields。 Form 构造函数采用第五个参数,您可以在其中提供所需的字段验证器。

示例:

$form = Form::create(
    $this, 
    'FormAjouter', 
     $fields, 
     $actions, 
     RequiredFields::create(['Image'])
);

自定义验证消息的最简单方法是使用 i18n。如果您的默认语言环境是法语,请创建一个名为 mysite/lang/fr.yml 的文件,您可以在其中放置如下内容:

Form:
  FIELDISREQUIRED: 'Veuillez remplir le champ {name}'

{name} 将替换为您的实际字段标题。当然你也可以省略占位符。

如果您需要为个人 form-fields 使用不同的文本,您可以在每个需要自定义错误消息的字段上使用 setCustomValidationMessage

示例:

$uploadField = FileField::create('Image');
$uploadField->setCustomValidationMessage('Please upload a file');