首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CodeIgniter -变量作用域

CodeIgniter -变量作用域
EN

Stack Overflow用户
提问于 2011-04-04 06:38:19
回答 2查看 1.3K关注 0票数 1

我有一个用于登录表单的控制器。在视图中,我有一个{ error }变量,当出现错误时,我希望使用解析器lib来填充该变量。我的控制器中有一个index()函数,它由数组$init控制,它将一些基本变量和错误消息设置为'':

代码语言:javascript
复制
    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);
    }   

在我的登录脚本的末尾,我有以下内容:

代码语言:javascript
复制
  if { // query successful }
  else 
        {
            $init['error'] = "fail";

            $this->parser->parse('login/index', $init);
        }

当然,这是行不通的。首先,它只加载索引视图,没有页眉和页脚,并且无法将原始的$init‘’error‘设置为(在本例中) "fail“。我试着调用$this->index(),可能是以数组作为参数,但我似乎不知道如何传递一个新的$init‘’error‘来覆盖原来的$init’‘error’。实际上,在输入这段代码时,似乎不可能做我想做的事情,因为原始值总是覆盖任何新的值。因为我将其声明为nothing ('')。

那么,有没有办法把我的错误信息放进去呢?如果是这样的话,是如何做到的。如果没有,我该如何在正确的位置获得错误消息呢?(我的视图:{error}。我尝试过使用'global‘来绕过变量作用域,但是这失败了。在此之前非常感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-04 06:49:55

在生成视图之前,必须修改$init。

要加载页眉和页脚,可以在视图中包含以下命令和页脚的等价物。

代码语言:javascript
复制
<?php $this->load->view('_header'); ?>

要显示错误,您也可以使用validation_errors()

如果您使用的是codeigniter窗体验证。

如果将datamapper orm用于codeigniter,则可以编写模型验证,如果查询因违反验证规则而失败,则在模型的->error属性中会显示正确的错误消息。

模型的代码:

代码语言:javascript
复制
var $validation = array(
        'user_name' => array(
            'rules' => array('required', 'max_length' => 120),
            'label' => 'Name'
        )
    );
票数 1
EN

Stack Overflow用户

发布于 2014-07-13 05:15:10

你可以试试这个:

代码语言:javascript
复制
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()完全一样,它只接受字符串作为第一个参数,而不是视图文件,因此它是协同工作的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5533006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档