我正在为我的CodeIgniter项目编写一个template_loader。像往常一样,我的模板需要几个安全层。其中一个,也就是第一个,正在检查文件是否存在。
现在,我的问题是:我无法配置给模板加载器的地址。当我使用名为'include()'的简单php函数时,它可以工作,但是使用我的template_loader函数,它无法工作。
这是我的实际页面(index.php):
<?php
/**
Add the page-suitable template from in folder.
**/
$this->template_loader->load_template('inc/temp_one_col.php');
// include('inc/temp_one_col.php');
?>
这是我的班级和template_loader:
class Template_loader
{
function load_template ($arg)
{
$base_name = basename($arg);
$CI =& get_instance();
if(file_exists($arg) === true)
{
echo 'it is also good.';
if (pathinfo($base_name, PATHINFO_EXTENSION) == 'php' ||
pathinfo($base_name, PATHINFO_EXTENSION) == 'html'
)
{
$file_name_check = substr($base_name, 0, 4);
if($file_name_check === TEMP_FILE_INDICATOR)
{
include($arg);
}
else
{
redirect($CI->base_url . '/error/show_problem');
}
}
else
{
redirect($CI->base_url . '/error/show_problem');
}
}
else
{
redirect($CI->base_url . '/error/show_problem');
}
}
}
答案 0 :(得分:2)
出于兴趣,你将什么作为$arg
参数传递给函数?
听起来你只需要使用文件的正确路径,该路径应该是文件系统中文件的绝对路径。
要获取绝对路径,您可以在站点index.php中创建一个新的全局变量,以指向您的views文件夹。
<强>根目录/ index.php的:强>
if (realpath('../application/views') !== FALSE)
{
$views_path =realpath('../application/views').'/';
define('VIEWSPATH', $views_path);
}
现在,您可以将其用作$arg
参数VIEWSPATH.$path_to_file