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

时间:2017-04-24 15:06:53

标签: php forms image silverstripe

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

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']并且表单返回并清除我的会话数据。我做错了什么?

1 个答案:

答案 0 :(得分:1)

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

示例:

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

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

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

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

如果您需要针对单个表单字段使用不同的文本,则可以在需要自定义错误消息的每个字段上使用setCustomValidationMessage

示例:

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