【问题标题】:Using die() in functions under CodeIgniter在 CodeIgniter 下的函数中使用 die()
【发布时间】:2013-04-25 09:32:50
【问题描述】:

我正在 CodeIgniter 中编写一个 Web 应用程序,并且我正在尝试应用用户激活。

    function is_active() {
        $active_state = $this->my_model->check_active();
        if ($active_state == 'no') {
            $this->load->view('activation_page');
            die();
        }
    }

上面的代码会产生一个空白页,如果我删除 die();如果将在activation_page旁边打印出members_area

那么我怎样才能强制它加载请求的视图并退出?

【问题讨论】:

  • 你根本不需要使用 die()
  • 谢谢,但那样就不行了。

标签: php codeigniter codeigniter-2


【解决方案1】:

显然你没有进入 if 语句,这意味着如果用户不活跃,你加载激活页面。

仍然没有 else,如果用户处于活动状态,它将加载视图。

试试:

 if ($active_state == 'no') {
    $this->load->view('activation_page');
 } 
 $this->load->view('members_area');

注意:您可能想要恢复 if 条件。检查用户是否处于活动状态看起来更合乎逻辑,否则回退到激活页面。

编辑:

请参考此代码:http://paste.laravel.com/pfO

注 2:许多可能的解决方案之一。

【讨论】:

  • 实际上它确实进入了 if 语句,因为如果我将其修改为 die('error message');它将在我的 if 语句中从 die() 产生错误消息。问题是它不会更快地加载视图。谢谢
  • 你在哪里使用这个函数is_active()?
  • 在我的控制器下 __construct
  • 让函数is_active返回true或false,然后在构造函数后的next方法中加载视图……就可以了。
  • 谢谢,我让函数返回真或假,但我不明白如何在构造后的下一个方法中加载视图。你什么意思?
【解决方案2】:

试试

 if ($active_state == 'no') {
    $this->load->view('activation_page');
    return false;
 }

【讨论】:

    【解决方案3】:

    如果条件正确,你应该玩过

    if ($active_state == 'no') {
        $this->load->view('activation_page');
    }else{
        $this->load->view('members_area');
    } 
    

    【讨论】:

    • 我完全按照你说的做了,但它仍然加载了两个视图。谢谢
    • @Zim3r 您可能正在将另一个视图加载到您正在调用is_active的其他地方@
    • 是的,默认情况下它应该转到其他视图,但我在 __construct 下使用它,我认为它应该首先执行 __construct 下所述的操作。
    【解决方案4】:

    我会将您的 if 语句放入模块的控制器而不是模型中。 您应该在那里进行检查,然后您可以围绕其他视图调用进行 if 语句。这样它就不会加载您不希望未激活用户看到的其他视图。

    【讨论】:

      猜你喜欢
      • 2013-08-24
      • 2011-03-30
      • 2013-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-26
      • 2023-03-11
      相关资源
      最近更新 更多