我有以下表单请求:
class FileRequest extends Request
{
public function authorize()
{
return true;
}
public function rules()
{
$rules = [];
if($this->file_type == 'image')
$rules['file'] = 'required|image|mimes:jpg,jpeg,gif|max:244|image_size:>=360,>=180';
else
$rules['file'] = 'required|mimes:doc,pdf,docx,txt,rtf|max:1000';
return $rules;
}
public function messages()
{
$messages = [
'file.image_size' => 'The image size is incorrect.'
];
return $messages;
}
public function response(array $errors)
{
$content = "<textarea data-type=\"application/json\">{\"ok\": false, \"message\": \"" . $errors[0] . "\" }</textarea>";
return response($content);
}
}
如何从errors数组中返回第一个错误。
当我手动创建验证器时,我能够执行以下操作:$validator->errors()->first()
但这在使用FormRequest类时不起作用。执行errors[0]
只会给我一个偏移异常错误。
我正在使用iframe提交,这就是我需要如上所述返回响应的原因。
任何帮助表示感谢。
答案 0 :(得分:0)
您似乎需要使用laravel中的验证器系统。 之后你可以使用:$ validator-&gt; messages();因为有所有的错误。 如果你使用$ validator-&gt; messages()[0];你会收到第一条消息。
我建议你这样的事情
<?php
$email;$comment;$captcha;
if(isset($_POST['gender'])){
$email=$_POST['gender'];
}if(isset($_POST['firstname'])){
$email=$_POST['firstname'];
}if(isset($_POST['lastname'])){
$email=$_POST['lastname'];
}if(isset($_POST['companyname'])){
$email=$_POST['companyname'];
}if(isset($_POST['customernumber'])){
$email=$_POST['customernumber'];
}if(isset($_POST['email'])){
$email=$_POST['email'];
}if(isset($_POST['emailagain'])){
$email=$_POST['emailagain'];
}if(isset($_POST['telephonenumber'])){
$email=$_POST['telephonenumber'];
}if(isset($_POST['subject'])){
$email=$_POST['subject'];
}if(isset($_POST['message'])){
$email=$_POST['message'];
}if(isset($_POST['g-recaptcha-response'])){
$captcha=$_POST['g-recaptcha-response'];
}
if(!$captcha){
echo '<h2>Please check the captcha form.</h2>';
exit;
}
$secretKey = "mtSecretKey";
$ip = $_SERVER['REMOTE_ADDR'];
$response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$secretKey."&response=".$captcha."&remoteip=".$ip);
$responseKeys = json_decode($response,true);
if(intval($responseKeys["success"]) !== 1) {
echo '<h2>You are a spammer !</h2>';
} else {
echo '<h2>Thanks for your email.</h2>';
}
?>
答案 1 :(得分:0)
我必须做以下事情:
$errors['file'][0]