如果可能,我想一次在$ data中定义一个值,然后可以在控制器的任何功能中访问这些值。目前,当我运行代码时,这些代码都无法访问。
为了澄清,当我在线搜索时,大多数答案都在说明如何全局定义整个应用程序的变量,我想指定仅在控制器中需要它。
Codeigniter 3 我的背景:我没有编码经验,但是我很想学习。
我所做的:
我试图在一开始将其添加到控制器中并使其公开
我试图将其添加到__construct函数中
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Pages extends CI_Controller {
public $data = [];
public $footerScripts = [];
public function __construct() {
parent::__construct();
//Authentication required for this controller
if (!$this->ion_auth->logged_in())
{
//if not loggedin, reroute to the login page
redirect('Auth/login', 'refresh');
}
$this->load->helper('sys');
$this->load->helper('array');
//set global information this is then overwritten by the individual functions
$this->data['pageTitle'] = 'Pages';
$this->data['activeNav'] = 'pages';
$this->data['controllerIcon'] = 'flaticon-interface-6';
}
public function index()
{
//index doesn't always exist, instead we use list
redirect(base_url('backend/pages/list'));
}
public function list()
{
$data = [];
$data['view'] = "backend/defaultTheme/pages/list";
$this->load->view('backend/defaultTheme/master/master2.php', $data);
}
}
所需结果:
我想声明控制器的名称,以便可以在所有视图上使用,除非其中一个函数想要覆盖它。
$this->data['pageTitle'] = 'Pages';
在视图中,我想:
echo $pageTitle;
无需在控制器的每个功能中声明它
答案 0 :(得分:0)
您的示例已正确设置。
您已经定义了$ data属性(即所谓的$ data),以便您的类中的所有方法(函数)都可以访问该类,并且只能在此类中访问。
public $data = []; // $data property
看来您的清单方法有问题。 这是您目前对我所包含的评论的看法...
public function list()
{
$data = []; // This is not needed as we have $this->data
$data['view'] = "backend/defaultTheme/pages/list"; // This is just a string
$this->load->view('backend/defaultTheme/master/master2.php', $data); // Needs to reference the $this->data
}
所以它将变成类似...
public function list()
{
// Load the subview
$this->data['view'] = $this->load->view('backend/defaultTheme/pages/list',NULL,TRUE);
// Display the final page
$this->load->view('backend/defaultTheme/master/master2.php', $this->data);
}
该类中的每个方法(函数)都可以访问属性$this->data
。
您会看到我已经使用过
$this->data['view'] = $this->load->view('backend/defaultTheme/pages/list',NULL,TRUE);
您已经知道,第二个参数是页面数据(变量),在这种情况下,它们是NULL或只是。当第三个参数设置为true(默认为false)时,将不显示视图,但将保存其内容。在这种情况下,进入$this->data['view']
。
这应该让您思考。
您应该阅读codeigniter用户指南,直到今天我仍然会这样做。