【问题标题】:Extending Controllers and passing variables [closed]扩展控制器和传递变量
【发布时间】:2013-01-08 20:32:08
【问题描述】:

我有一个后端控制器和其他扩展后端控制器的控制器,我正在尝试弄清楚如何在后端控制器中设置一个变量并在扩展它的控制器中使用它。

如果我在后端控制器中设置一个作为配置值的变量,子控制器如何访问它。

编辑:

http://philsturgeon.co.uk/blog/2010/02/CodeIgniter-Base-Classes-Keeping-it-DRY

我正在使用 phil sturgeon 基类来保持我的应用程序的干燥方法,控制器如下所示,当我加载我的登录控制器时,我收到 500 错误,但如果我加载应用程序中包含的 CI 控制器欢迎它加载得很好。

为什么访问登录控制器时出现 500 错误。

<?php 

if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class MY_Controller extends CI_Controller {

    public function __construct()
    {
        parent::__construct();  
    }

    public function index()
    {   

    }
}

<?php 

if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Backend_Controller extends MY_Controller 
{

    public function __construct()
    {
        parent::__construct();  
    }

    public function index()
    {   

    }
}

<?php 

if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Login extends Backend_Controller {

    public function __construct()
    {
        parent::__construct();  
    }

    public function index()
    {   

    }
}

【问题讨论】:

  • 嗯,这很模糊......
  • 请详细说明您的问题;这个小细节很难帮你。
  • 这不是一个问题,而是一个猜测的邀请。

标签: php controller backend


【解决方案1】:

如果您的后端控制器(父级)具有可见性为 public 或 protected 的实例变量,则扩展后端控制器的控制器将能够使用 $this 关键字访问这些变量。

例子:

<?php
class ParentController {
    protected $foo = "bar";
}

class ChildController extends ParentController {
    public function indexAction() {
        echo $this->foo;
    }
}

【讨论】:

  • 由于某种原因,当我加载应用此逻辑时,我只是得到一个白屏并且没有错误。
  • 听起来您遇到了错误,但尚未将 PHP 配置为显示错误。您可以在 PHP ini 文件中启用错误显示: display_errors On error_reporting E_ALL|E_STRICT
  • 我进行了编辑以解释更多问题。
  • 好吧,我发现我忘了将前端和后端控制器添加到核心文件夹,但是在后端控制器中我有受保护的 $cms_template = $this->config->item('default_cms_template' );这会出现 500 错误但是如果我这样做 $cms_template = 'mytemplate';那么它知道我该如何解决这个问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多