【问题标题】:Loading view inside view, how to get name of main view?在视图中加载视图,如何获取主视图的名称?
【发布时间】:2018-06-24 06:40:41
【问题描述】:

我创建了一个视图 ma​​in.php 并在 ma​​in.php

中加载了视图 internal.php

现在,在 internal.php 中使用以下代码:

pathinfo(__FILE__, PATHINFO_FILENAME), '.php'

或代码:

echo $_ci_view;

我得到 internal.php 而我想要 ma​​in.php 因为它是在浏览器窗口中加载的主视图。 我该怎么做?

【问题讨论】:

  • 加载 internal.php 时浏览器中的 url 是否发生变化?
  • 不,我在 url 中得到 main
  • 但是由于我在内部使用页面名称获取代码,这就是它显示内部的原因。但是如何在那里显示主要内容?
  • 为什么需要这些信息?
  • 另外,我无法在主页中编写页面视图名称获取代码,因为内部页面有一个已提交的表单,并且在控制器内部,我从该表单的发布数据中接收视图名称。跨度>

标签: php codeigniter path codeigniter-2 codeigniter-3


【解决方案1】:

你可以像这样解析url:

$q=parse_url($_SERVER['REQUEST_URI']);
$q=(isset($q['path']))?$q['path']:''; 

echo $q 输出例如:'/main.php'

php manualparse_url() 上查看更多信息

【讨论】:

  • 这里的 $query 是什么?我的页面名称是 main.php,所以 url 看起来像:abc.com/main
  • parse_url 返回一个数组
  • 因为你需要路径而不是查询部分,我已经更新了答案
  • 它会对 codeigniter 的安全性或性能产生不利影响吗?
  • 并且 url 仍然显示控制器的名称而不是显示视图的名称...如何纠正?
【解决方案2】:

使用 包括“位置/文件名.php”; 在 main.php 中

参考https://www.w3schools.com/php/showphp.asp?filename=demo_include2

【讨论】:

  • 它是否会以任何方式对 codeigniter 的安全部分或性能方面产生不利影响?
  • 加载单个文件(包含所有内容)和加载另一个文件中的文件肯定有性能差异,但差异较小
  • 其实没有安全问题,但是在加载之前检查文件是否存在总是好的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-05
  • 2011-11-09
  • 2013-06-11
相关资源
最近更新 更多