2015-10-05 68 views
1

IM在驗證工作在laravel所以下面是我的代碼laravel 5確認消息返回一些陣列

//error holder 
       $error = array(); 
       $validator = Validator::make($request->all(),[ 
        'email' => 'email|unique:users', 
        'username' => 'required|regex:/^[a-zA-Z0-9_]+([-.][a-zA-Z0-9_]+)*$/', 
        'new_password' => 'required', 
        'confirm_password' => 'required', 
        'full_name' => 'required', 
        'role' => 'required', 
        'status' => 'required', 
       ]); 
       if ($validator->fails()){ 
        array_push($error, $validator->messages()); 
       } 
$msg = "Ops seems like there's an error: "; 
        foreach($error as $error_bug){ 
         $msg .= $error_bug . ", "; 
        } 

//return error 
return $msg; 

所以首先我創建一個空數組然後下通過陣列推直到該數組和環路中的錯誤消息對象並將其返回給客戶端。一切正常,除了有一個醜陋的東西去,這使我這個

Ops seems like there's an error: {"email":["The email has already been taken."]}

,你可以看到有支架和我不想要牙套,我只想從驗證得到錯誤的信息失敗。任何想法,幫助?

+0

你能'的print_r($錯誤);'和'的print_r($ error_bug);'? – aldrin27

回答

1
@if (count($errors) > 0) <div class="alert alert-danger"> 
<ul> @foreach ($errors->all() as $error) 
<li><b>Ops, something went wrong.</b></li> 
<li>{{ $error }}</li> 
@endforeach 
</ul> </div> @endif 

此方法的優點是您不必重複不必要的代碼。

UPDATE:

$msg = $validator->errors()->all("Ops seems like there's an error: :message"); 
+0

即時檢索它以ajax的方式,所以我只想要扔掉的郵件 –

+0

更新了我的答案,與laravel檢查代碼,它的工作:) – mimo

+0

謝謝!像魅力一樣工作 –