【问题标题】:How to load view or use redirect() inside multiple environment check in Codeigniter?如何在 Codeigniter 的多个环境检查中加载视图或使用 redirect()?
【发布时间】:2017-05-30 08:29:00
【问题描述】:

想要检查环境,如果匹配某些情况,然后想要重定向或加载某些视图。 get_instance(); 在环境检查的 index.php 中不起作用
我看起来像下面这样:

if (ENVIRONMENT === "production")
{

    /*if(error ="db error")
    redirect("/someview","refresh");
    or load view header and footer
    */

}

【问题讨论】:

  • 是否有必要将您的environment 逻辑仅放在index.php 中?
  • 我只需要在发生一些错误时重定向。就是这样。
  • 只是为了验证,您想为所有控制器设置一个通用的“错误处理逻辑”吗?假设如果发生db error,您想将其动态重定向到某个view? (例如 'about' => 'home' / 'some-url' => 'home')
  • @eeya 我只是对 CI 中的错误处理机制感到困惑。在 stackoverflow 用户的帮助下,我找到了关闭错误的步骤。但现在我无法处理这些错误..

标签: php codeigniter redirect error-handling environment


【解决方案1】:

我只是对 CI 中的错误处理机制感到困惑。在 stackoverflow 用户的帮助下,我找到了关闭错误的步骤。但现在我无法处理这些错误。

如果您想处理某个错误,您可以将其重定向到过程中的某个视图,就像您在问题中提到的那样。

 // Assuming you have a [Home] Controller that extends to your [Common] parent class
 class Home extends Common {
    public function index()
    {
        $this->load->helper('url');
        $bCheck = false;
        if ($bCheck !== true) {
            $this->handleRedirectMethod('path/to/your/controller');
        }
    }
}

然后在你的父 [Common] 控制器上。 (例如 Common.php)

class Common extends CI_Controller
{
    public function handleRedirectMethod($sUrl, $sMethodName = 'refresh', $sStatusCode = '302')
    {
        $sServerName = $_SERVER['REQUEST_SCHEME'] . '://' . $_SERVER['HTTP_HOST'];
        redirect($sServerName . '/' . $sUrl, $sMethodName, $sStatusCode);
    }
}

希望这能让您了解如何处理这些错误

【讨论】:

  • 我故意将 $bCheck 分配给 false。从那里,您可以检查您的条件(例如 db 错误异常)
  • 喜欢下面的代码吗? $bCheck=$this->db->get($tb);
  • 是的,$bCheck = $this->helper->get('tb');。如果这返回错误,则从 [url] 辅助类调用 [redirect] 方法或检查上面说明的 [handleRedirectMethod]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-26
  • 2017-08-13
  • 2013-01-19
  • 1970-01-01
  • 1970-01-01
  • 2013-03-18
  • 1970-01-01
相关资源
最近更新 更多