如何在Laravel中使用带有自定义消息的规则对象来验证图像数组类型

时间:2019-04-25 14:06:46

标签: laravel laravel-validation

实际上,我试图创建一个规则对象,该对象能够验证图像数组中的每种图像类型,不仅足够,而且还必须在规则对象中的覆盖消息功能中显示自定义消息。

<?php

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class ImagesArray implements Rule
{
    /**
     * Create a new rule instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Determine if the validation rule passes.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {
       return [$attribute => 'mimes:jpeg,jpg,png' ];
       here i need to validate these file types.

    }

    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message()
    {
        return 'The validation error message.';
        here, I need to show my custom messgae.

    }
}

2 个答案:

答案 0 :(得分:0)

您应使用“请求”。 例如,创建q请求类:php artisan make:request MyRequest。

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class MyRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

/**
 * Get the validation rules that apply to the request.
 *
 * @return array
 */
public function rules()
{
    return [
        'image' => 'mimes:jpeg,jpg,png',            
    ];
}
public function messages()
{
    return [
      'image.mimes' => 'This image is not supported.',
    ];
}

}

在控制器导入类MyRequest中,并在方法中使用MyRequest 例如:

 public function store(MyRequest $request)
{ // your code
}

让我知道是否有帮助。谢谢!

答案 1 :(得分:0)

验证数组或嵌套参数时,应在规则中使用.访问特定的数组索引。但是如果要对该数组上的每个索引应用规则,则可以使用.*

$validator = Validator::make($request->all(), [
    'image.*' => 'mimes:jpeg,jpg,png',
], [
    'image.*' => 'Invalid file type.',
]);

或者如果您使用的是申请表

public function rules(){
    return [
        'image.*' => 'mimes:jpeg,jpg,png',
    ];
}
public function mesages(){
    return [
        'image.*' => 'Invalid file type.',
    ];
}
  

有关更多信息,请参见Laravel's Documentation on Validation Arrays