Php 如何获取JSON中特定字段YII2的属性和错误消息
验证规则:Php 如何获取JSON中特定字段YII2的属性和错误消息,php,json,yii2,yii2-basic-app,Php,Json,Yii2,Yii2 Basic App,验证规则: public function rules() { return [ [['name', 'email', 'password'], 'required'], [['email'], 'unique'], [['password'],'string', 'min' => 6], ]; } 情景 public function signup() { if (!$this->validate(array('name'))
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中每个字段的所有字段、错误和消息
谢谢您总是将结果分配到同一个索引,这样您只会收到最后一条消息
请尝试使用concat查看消息
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');
}
}
或者将不同的消息分配给不同的$register\u 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']);
您总是将结果分配给相同的索引,这样您只会得到最后一条消息
请尝试使用concat查看消息
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');
}
}
或者将不同的消息分配给不同的$register\u 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']);