我构建了一个函数,如果你给它一个路径数组,它将在每个路径中查找一个文件,如果你给它一个路径的数组,它将只在文件的路径中查找。
我的问题是,当你给它一系列路径时,例如:
$array = array(
'template_view_paths' => array(
'path_name' => some/path/
'path_name_two' => some/path/two/
)
)
似乎在some/path/
中找到该文件,但继续some/path/two/
并且因为该文件不存在而吓坏了。如果它在任何路径中找到它停止在其他路径中查找的文件,我将需要更改哪些内容?
代码 - 未重新计算
public function render_view($template_name){
if(!isset($this->_options['template_view_path'])){
throw new AisisCore_Template_TemplateException('Not view path was set.');
}
if(is_array($this->_options['template_view_path'])){
foreach($this->_options['template_view_path'] as $template=>$path){
require_once($path . $template_name . '.phtml');
}
}else{
if(!file_exists($this->_options['template_view_path'] . $template_name . '.phtml')){
throw new AisisCore_Template_TemplateException('Could not find: ' . $template_name . '.phtml at ' . $path);
}
require_once ($this->_options['template_view_path'] . $template_name . '.phtml');
}
}
注意: 要关注的部分是if(is_array()){}
循环。
答案 0 :(得分:0)
不应:
if(is_array($this->_options['template_view_path'])){
foreach($templates as $template=>$path){
require_once($path . $template_name . '.phtml');
}
}else{
是:
if(is_array($this->_options['template_view_path'])){
foreach($this->_options['template_view_path'] as $template=>$path){
if (file_exists($filename = $path . $template_name . '.phtml')) {
require_once($filename);
return;
}
}
throw new AisisCore_Template_TemplateException('Could not find: ' . $template_name . '.phtml in any paths');
}else{
你永远不会实际循环$this->_options['template_view_path']
。