2017-07-16 46 views
1

驗證規則:如何獲得屬性和錯誤信息的特定字段YII2在JSON

public function rules() 
{ 
    return [ 
     [['name', 'email', 'password'], 'required'], 
     [['email'], 'unique'], 
     [['password'],'string', 'min' => 6], 
    ]; 
} 

方案

public function signup() { 
    if (!$this->validate(array('name')) { 
     $register_errors['field'] = 'name'; 
     $register_errors['message'] = $this->getErrors('name'); 
    } 

    if (!$this->validate(array('email')) { 
     $register_errors['field'] = 'email'; 
     $register_errors['message'] = $this->getErrors('email'); 
    } 

    if (!$this->validate(array('password')) { 
     $register_errors['field'] = 'password'; 
     $register_errors['message'] = $this->getErrors('password'); 
    } 
} 

返回值

if (!$this->validate) { 
    $register_errors['error'] = true; 
    return json_encode($register_errors); 
} 

結果: 總是返回

{"field":["Email cannot be blank."],"message":[],"error":true} 

如何正確返回JSON中每個字段的所有字段,錯誤和消息?

感謝

回答

0

所以你只有最後一條消息
嘗試CONCAT消息usinng。你總是分配結果相同指數=

,或者給不同的消息不同的$ register_errors ['message'] []

public function signup() { 
    if (!$this->validate(array('name')) { 
     $register_errors['field'] = 'name'; 
     $register_errors['message'][] = $this->getErrors('name'); 
    } 

    if (!$this->validate(array('email')) { 
     $register_errors['field'] = 'email'; 
     $register_errors['message'][] = $this->getErrors('email'); 
    } 

    if (!$this->validate(array('password')) { 
     $register_errors['field'] = 'password'; 
     $register_errors['message'][] = $this->getErrors('password'); 
    } 
} 

var_dump( $register_errors['message']); 
相關問題