2014-09-26 38 views
0

我正在構建一個json REST API。我需要擴展驗證庫爲所有驗證失敗的json輸出添加靜態標記"error":"validation_failed"在laravel中添加一個驗證失敗消息的密鑰

// create the validation rules ------------------------ 
    $rules = array(
     'firstName'   => 'required', 
     'lastName'   => 'required', 
     'email'    => 'required|email|unique:users', 
     'reg_type'   => 'required|in:'.implode(",", $this->types), 
     'oauthUId'   => 'required_if:reg_type,'.implode(",", $this->externalTypes), 
     'password'   => 'required_if:reg_type,email', 
     'parentId'   => 'sometimes|integer|exists:user_accounts,id', 
    ); 

    // do the validation ---------------------------------- 

    $validator = Validator::make(Input::all(), $rules); 

    // check if the validator failed ----------------------- 

    if ($validator->fails()) { 
     // get the error messages from the validator 
     return $validator->messages(); 
    } 
    else { 
     // validation successful --------------------------- 
    } 

我檢查了laravel/validator.php,發現它應該被添加到Illuminate \ Support \ MessageBag對象。

$this->messages->add($attribute, $message); 

如何通過擴展驗證器類來做到這一點。

我需要的輸出JSON這樣

{ 
"error": 
"validation_failed", 
"firstName": 
"The first name field is required.", 
"lastName": 
"The last name field is required.", 
"reg_type": 
"The selected reg type is invalid." 
} 

回答

1

你或許可以實現自己的驗證類,並添加到它:

class MyValidator extends Validator { 

    public function passes() 
    { 
     if (! $passes = parent::passes()) 
     { 
      $this->addError('error', 'validation_failed', []); 
     } 

     return $passes; 
    } 

}