CodeIgniter - Variable scope
我有一个用于登录表单的控制器。在视图中,我有一个{error}变量,当发生错误时,我想通过使用解析器库来填写该变量。我的控制器中有一个函数index(),由数组$ init控制,该数组将一些基本变量和错误消息设置为\\'\\':
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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); } |
在登录脚本的末尾,我有以下内容:
1 2 3 4 5 6 7 | if { // query successful } else { $init['error'] ="fail"; $this->parser->parse('login/index', $init); } |
现在,这当然不起作用。首先,它仅加载索引视图,而没有页眉和页脚,并且在将原始$ init [\\'error \\']设置为" fail "时失败。我试图用数组作为参数来调用$ this-> index(),但是我似乎无法弄清楚如何传递一个新的$ init [\\'error \\']来覆盖原始参数。 。实际上,在键入此内容时,似乎无法做我想做的事情,因为原始值将始终覆盖新内容。因为我将其声明为空(\\'\\')。
那么,有没有办法在其中获取我的错误消息?如果是这样,怎么做。如果没有,我该如何将错误消息发送到正确的位置? (我的观点:{错误}。我已经尝试使用\\'global \\'来绕过变量范围,但是,这失败了。在此先感谢。
$ init必须在生成视图之前进行修改。
要加载页眉和页脚,可以在视图中包含以下命令和页脚的等效项。
1 | <?php $this->load->view('_header'); ?> |
要显示错误,您也可以使用validation_errors()
如果您正在使用codeigniter表单验证。
如果您将datamapper orm用于codeigniter,则可以编写模型验证,并且如果由于违反验证规则而导致查询失败,则会在模型的-> error属性中收到正确的错误消息。
您的模型的代码:
1 2 3 4 5 6 |
您可以尝试以下操作:
1 2 3 4 5 6 7 8 9 10 11 | 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); } |
在