如何在 JSON 中获取特定字段 YII2 的属性和错误消息
How to get Attribute and Error Message on Specific Field YII2 in 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');
}
}
Return值
if (!$this->validate) {
$register_errors['error'] = true;
return json_encode($register_errors);
}
结果:
总是 return
{"field":["Email cannot be blank."],"message":[],"error":true}
如何正确return JSON中每个字段的所有字段、错误和消息?
谢谢
您始终将结果分配给相同的索引,因此您只会收到最后一条消息
尝试使用 .=
连接消息
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_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']);
验证规则:
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');
}
}
Return值
if (!$this->validate) {
$register_errors['error'] = true;
return json_encode($register_errors);
}
结果: 总是 return
{"field":["Email cannot be blank."],"message":[],"error":true}
如何正确return JSON中每个字段的所有字段、错误和消息?
谢谢
您始终将结果分配给相同的索引,因此您只会收到最后一条消息
尝试使用 .=
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_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']);