Laravel验证数组,验证时访问元素?

时间:2018-08-28 19:24:26

标签: laravel laravel-validation

我有一个要验证的元素数组,此数组具有这种形式

{
    "slugs" : {
        1 : "prueba",
        2 : "test"
}

塞子是输入<input name="slugs[{{ $lang->id }}]">,数字是语言1 = spanish / 2 = english的ID。

我想要的是在这样的表单请求中验证这些字段的唯一性

public function rules()
{
    $rules = [
        //
        'slugs.*' => Rule::unique('translation_entries')->where(function($query) {
            //here i want to access the * that represent the lang id
            //like this $query->where('lang_id','=',$query->*);
        })
    ];
}

我可以在唯一的Rule类中访问索引*吗?

1 个答案:

答案 0 :(得分:0)

只要您使用Laravel> = 5.5,就可以使用closure

'slugs.*' => [
    function ($attribute, $value, $fail) {
        $id = str_after($attribute, '.');

        if (\DB::table('translation_entries')->where('lang_id', $id)->where('slug', $value)->exists()) {
            $fail('The slug has already been taken.');
        }
    },
],

'slug'更改为translation_entries表上的列名(如果有)。