我在我的主视图中使用我的菜单加载不同的内容,代码工作正常但是我有这个错误消息。
A PHP Error was encountered
Severity: Notice
Message: Use of undefined constant users - assumed 'users'
Filename: views/welcome.php
Line Number: 53
A PHP Error was encountered
Severity: Notice
Message: Use of undefined constant stores - assumed 'stores'
Filename: views/welcome.php
Line Number: 56
A PHP Error was encountered
Severity: Notice
Message: Use of undefined constant notes - assumed 'notes'
Filename: views/welcome.php
Line Number: 59
这是我的观点
<div id="nav">
<div id="imagesBox">
<a href="index.php?section=users"><img class="imagesLeft" src="images/usuario_on.png"></a>
<a href="index.php?section=stores"><img class="imagesLeft" src="images/tienda_on.png"></a>
<a href="index.php?section=notes"><img class="imagesLeft" src="images/aviso_on.png"></a>
</div>
<?php
$section; $users=0;
switch ($_GET['section']) {
case users:
$this->load->view('users');
break;
case stores:
$this->load->view('stores');
break;
case notes:
$this->load->view('notes');
break;
}
?>
</div>
这是我的控制器(我正在使用tank_auth并且正常工作)
class Welcome extends CI_Controller
{
function __construct()
{
parent::__construct();
$this->load->helper('url');
$this->load->library('tank_auth');
}
function index()
{
if (!$this->tank_auth->is_logged_in()) {
redirect('/auth/login/');
} else {
$data['user_id'] = $this->tank_auth->get_user_id();
$data['username'] = $this->tank_auth->get_username();
$this->load->view('welcome', $data);
}
}
}
我没有找到解决此问题的最佳方法,这有点奇怪,因为代码的工作方式与我想要的一样。
答案 0 :(得分:3)
使用以下内容替换您的视图代码:
<?php
$section; $users=0;
switch ($_GET['section']) {
case "users":
$this->load->view('users');
break;
case "stores":
$this->load->view('stores');
break;
case "notes":
$this->load->view('notes');
break;
}
必须在引号中定义字符串。您已在案例部分中使用的字符串中留下引号。
答案 1 :(得分:1)
你需要在case语句中添加引号,否则它们将被视为常量,如果它们未被定义,则php假设它们是字符串(这就是为什么代码可以工作,但会生成通知)。
case 'users':
..
case 'stores':
..
case 'notes':
..
由于$_GET['section']
的值对应view
,因此您可以使用简单的白名单简化代码:
if (in_array($_GET['section'], array('users', 'stores', 'notes')) {
$this->load->view($_GET['section']);
}
答案 2 :(得分:1)
由于一个愚蠢的错误,可能会发生此错误。确保您为控制器redirect('/auth');
创建了文件。也许您已经编写了redirect('/auth/login/');
但尚未为控制器 auth 创建文件。