PHP echo输出不生效?CodeIgniter控制器向视图传值异常求助
问题:CodeIgniter向视图传递title参数不生效
我刚开始学习PHP,目前正在学习向视图传递参数的相关操作。
我在Home.php控制器中编写了如下代码:
<?php class Home extends CI_Controller{ public function index() { $data['title'] = "Passing data to view"; $this->load->view('index', $data); } } ?>
视图文件index.php的代码如下:
<html> <head> <title><?php echo $title;?> </title> </head> <body> <h1>This is a heading</h1> </body> </html>
但运行后页面标题并未更新,仍然显示我之前设置的旧文本标题,截图如下:
我已保存所有修改的文件,也多次刷新页面,问题依旧存在。请问有人可以帮我指明问题排查方向吗?非常感谢。
排查方向
- 确认视图文件路径是否正确
你调用的$this->load->view('index', $data)默认会加载application/views/index.php文件,如果你修改的index.php放在了views的子目录下,或者项目里存在其他同名的index.php视图文件,会导致加载的不是你修改的版本,自然显示旧标题。 - 清理CodeIgniter项目缓存
如果你的项目开启了页面缓存,CI会直接返回已缓存的静态页面,不会重新渲染控制器传递的新参数。你可以直接删除application/cache目录下除了index.html之外的所有缓存文件,再重试。 - 排除浏览器缓存影响
按Ctrl+Shift+R(Windows/Linux)或Cmd+Shift+R(Mac)强制跳过缓存刷新页面,也可以打开浏览器无痕模式访问,确认不是本地缓存了旧页面导致的问题。 - 加调试逻辑验证
在你修改的index.php视图的body区域新增一行<?php var_dump($title);?>,访问页面看输出结果:- 如果输出是你设置的
Passing data to view,说明变量传递正常,检查是否有前端JS代码动态修改了页面标题; - 如果输出是旧标题或者提示
$title未定义,说明你访问的页面根本没有加载你修改的这个视图,要检查路由配置是否正确,application/config/routes.php里的默认控制器是否设置为Home,你访问的路径是否对应Home控制器的index方法。
- 如果输出是你设置的
内容的提问来源于stack exchange,提问作者儚き 戦士の翼
相关产品推荐
相关产品推荐

