2016-02-11 92 views
0

使用Laravel 5.0,表单请求中,验证规则可以作出这样的:Laravel 5 - 内FormRequest条件语句规则

class MyCustomRequest extends Request { 
    public function authorize() 
    { 
     return Auth::check(); 
    } 


    public function rules() 
    { 
     $rules = [ 
      'title' => 'required|max:255', 
     ]; 

     return $rules; 
    } 
} 

如何创建一个测试条件语句,如规则:

'user_id' === \Auth::id(); 

其中user_id是从请求参数袋

回答

0

您可以使用存在于你的规则排列规则的项目。

https://laravel.com/docs/5.2/validation#rule-exists

public function rules() 
{ 
    $rules = [ 
     'title' => 'required|max:255', 
     'user' => 'exists:users', 
    ]; 

    return $rules; 
} 

编辑:如果你想检查是否提交的值与你的价值观,你可以使用“在”符合规则。

https://laravel.com/docs/5.2/validation#rule-in

你需要以逗号分隔字符串提供IDS。没有测试,但你可以尝试这样的事情。

public function rules() 
{ 
    $ids = implode(",", DB::table('users')->all()->pluck('id')); 
    $rules = [ 
     'user_id' => 'in:'. $ids, 
    ]; 

    return $rules; 
} 

如果你只是想检查当前的用户ID然后这应该工作。

public function rules() 
{ 
    $rules = [ 
     'user_id' => 'in:'. Auth::user()->id, 
    ]; 

    return $rules; 
} 
+0

不试图检查id是否存在于数据库中......试图检查它是否与Auth :: id()相匹配,即当前用户的id。 – bsapaka

+0

你可以使用规则“in”。更新了我的答案。希望能帮助到你。 –