我正在使用codeigniter表单验证。要显示表单错误,请使用此
$this->data['message'] = (validation_errors() ?
validation_errors() :
($this->auth_lib->errors() ?
$this->auth_lib->errors() :
$this->session->flashdata('message')))
我不明白这种语法。我认为这是一个if else声明。这很难理解。
任何人都可以将此转换为正常的if else语句吗?
因为现在我要更改错误消息格式:
$this->message->set_error($msg=array('Test 1','Test 2'));
$message=$this->message->get_message();
$this->data['message']=$message;
任何人,请简化语法。感谢。
答案 0 :(得分:6)
if (validation_errors())
{
$this->data['message'] = validation_errors();
}
else if ($this->auth_lib->errors())
{
$this->data['message'] = $this->auth_lib->errors();
}
else
{
$this->data['message'] = $this->session->flashdata('message');
}
答案 1 :(得分:4)
$this->data['message'] = (validation_errors() ? validation_errors() : ($this->auth_lib->errors() ? $this->auth_lib->errors() : $this->session->flashdata('message')))
是一个多重三元运算,相当于:
if ( validation_errors() )
$this->data['message'] = validation_errors();
elseif ( $this->auth_lib->errors() )
$this->data['message'] = $this->auth_lib->errors();
else
$this->data['message'] = $this->session->flashdata('message');
答案 2 :(得分:2)
您发布的代码正在使用ternary operators。它们可以非常方便,但如果嵌套其中几个,有时也会令人困惑。这是没有三元运算符的等价文字......
if(validation_errors())
{
$this->data['message'] = validation_errors();
}
else
{
if($this->auth_lib->errors())
{
$this->data['message'] = $this->auth_lib->errors();
}
else
{
$this->data['message'] = $this->session->flashdata('message');
}
}