我有一个控制器,我用它来登录表单。在视图中,我有一个{error}变量,当出现错误时,我想通过使用解析器lib来填充它。我的控制器中有一个函数index(),由数组$ init控制,它将一些基本变量和错误消息设置为'':
function index()
{
$init = array(
'base_url' => base_url(),
'title' => 'Login',
'error' => ''
);
$this->parser->parse('include/header', $init);
$this->parser->parse('login/index', $init);
$this->parser->parse('include/footer', $init);
}
在我的登录脚本结束时,我有以下内容:
if { // query successful }
else
{
$init['error'] = "fail";
$this->parser->parse('login/index', $init);
}
现在,当然这不起作用。首先,它只加载没有页眉和页脚的索引视图,并且在将原始的$ init ['error']设置为(在这种情况下)为“fail”时失败。我试图用可能数组作为参数调用$ this-> index(),但我似乎无法弄清楚如何传递一个新的$ init ['error']来覆盖原来的那个。实际上,在输入这个时,似乎不可能做我想做的事情,因为原始值将始终覆盖任何新的...因为我声明它没有('')。
那么,有没有办法在那里收到我的错误信息?如果是这样,怎么样。如果没有,我将如何在正确的位置获取我的错误消息? (我的观点:{error}。我尝试用'全局'来绕过变量范围但是唉,这很失败。非常感谢。
答案 0 :(得分:1)
在生成视图之前修改$ init musst。
要加载页眉和页脚,您可以在视图中包含以下命令和页脚等效项。
<?php $this->load->view('_header'); ?>
要显示错误,您也可以使用validation_errors()
如果您使用的是codeigniter表单验证。
如果您使用datamapper orm进行codeigniter,您可以编写模型验证,如果查询因验证规则违规而失败,则会在模型的 - &gt; error属性中收到正确的错误消息。
您的型号代码:
var $validation = array(
'user_name' => array(
'rules' => array('required', 'max_length' => 120),
'label' => 'Name'
)
);
答案 1 :(得分:0)
你可以试试这个:
function index() {
$init = array(
'base_url' => base_url(),
'title' => 'Login',
'error' => ''
);
$string = $this->parser->parse('include/header', $init, TRUE);
$string .= $this->parser->parse('login/index', $init, TRUE);
$string .= $this->parser->parse('include/footer', $init, TRUE);
$this->parser->parse_string(string);
}
在parse()
中,当您希望返回数据而不是(立即)发送到输出类时,可以将TRUE(布尔值)传递给第三个参数。另一方面,方法parse_string的工作方式与`parse()完全相同,只接受一个字符串作为第一个参数来代替视图文件,因此它可以协同工作。