2017-05-20 3 views
0

배열을 추가 할 때 {{ Form::textarea('name') }}이 있습니다.배열의 유효성 검사 고유 값

$input = $request->all(); 
$name = explode(PHP_EOL, $input['name']); 

$this->validate($request, [ 
    'name' => Rule::unique('table1')->where(function ($query) { 
     global $name; 
     $query->whereIn('name', $name); 
    }) 
]); 

을하지만 그것은 작동하지 않습니다 컨트롤러에서

내가 사용합니다. 고유 한 값에 대한 유효성 검사 배열 방법

죄송합니다.

+0

** 이름 ** 아닌 배열 – MohamedSabil83

+0

그냥 팁을 하나의 문자열이기 때문에 작동하지 않습니다 : 당신은 익명 함수의 내부에서'$의 name'을 사용하려는 경우,'사용 ($ 이름을 추가)''function ($ query) use ($ name) {// ...}' – Drown

답변

1

쉬운 접근법. 더 나은 제어 및 능력이 validate 메서드를 사용하려면 원하는 경우 사용자 지정 유효성 검사 규칙을 만드는 것이 좋습니다.

$data = [ 
    'name' => explode(PHP_EOL, $request->input('name')) 
]; 

$validator = \Validator::make($data, [ 
    'name.*' => 'unique:table1,name', 
]); 

if ($validator->fails()) { 
    // Handle failed logic 
} 
+0

죄송합니다. 어쩌면 당신은 알 것입니다. 나는 출력 에러를 위해 return'redirect ('...') -> withErrors ($ validator) -> withInput();을 사용한다. 'name.0은 이미 사용되었습니다.'라는 오류를 출력합니다. 'name.0' 대신 값을 표시하는 법. – zerg