gpt4 book ai didi

CodeIgniter:如何跨页面设置公共(public)变量的默认值?

转载 作者:行者123 更新时间:2023-12-01 01:17:46 25 4
gpt4 key购买 nike

我正在使用 CI 构建一个网站,使用一个简单的模板系统。

这是我的基本模板:

$this->load->view('includes/header');
$this->load->view($main_content);
$this->load->view('includes/footer');

我有一组变量要传递给我的 View ,我知道我可以这样做:

$data['title'] = 'title goes here';
$data['main_content'] = 'name of page goes here';
$this->load->view('template', $data);

到目前为止 - 非常好。但我希望上面的变量集具有默认值,这样我就不必在每次加载模板时都声明整个集合。

我想到的解决方案是在我的主 Controller 下声明公共(public)静态变量,如下所示:

public static $default_data = array(
'title' => 'Generic Title Goes Here',
'main_content' => 'home_view'
);

然后我可以像这样加载我的 View :

$data = Home::$default_data;
$data['main_content'] = 'member_login_view'; // I can now declare only the relevant variables. all the rest will have the default values
$this->load->view('includes/template', $data);

这种方法工作正常,但我遇到了一个问题:我想设置为默认值的一些变量不是静态的。例如,在标题中,我有一个统计行显示我网站上的注册用户数量,以及我数据库中的产品数量。所以我用

来调用它
$data['stats'] = $this->products_model->get_stats();

有没有办法为这些变量设置默认值,这样我就不必在每次加载页面之前调用模型中的方法?

最佳答案

找到解决方案。希望这是一个好人。写下来希望对其他人有帮助。

我扩展了主 Controller ,并将所有公共(public)变量放在那里 - 静态和动态。我将它们声明为 protected ,因此我可以在所有 View 中使用它们。

这是application/core/MY_Controller.php:

class Home_Controller extends CI_Controller {

//Class-wide variable to store stats line
protected $stats;
protected $title;
protected $main_content;

public function __construct() {

parent::__construct();

//Put stats in Class-wide variable
$this->stats = $this->products_model->get_stats();

//Store stats in $data
$data->stats = $this->stats;

$data->title = 'Generic Website title';

$data->main_content = 'home_view';

//Load variables in all views
$this->load->vars($data);

}

我将主 Controller 的第一行更改为 class Home extends Home_Controller 而不是 class Home extends CI_Controller

关于CodeIgniter:如何跨页面设置公共(public)变量的默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14682116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com