带有Codeigniter的Smarty模板,当hirarichy中的目录太多时无法加载模板

2022-04-07 00:00:00 templates php smarty codeigniter

我正在使用CI Smarty

https://github.com/Vheissu/Ci-Smarty

据我所知,这有两个问题。但我打开此问题的原因是,如果.tpl文件位于另一个目录的目录中,则无法加载该文件。

e-g这是我当前SmartyTemplate的目录结构

--Themes
  --SomeOtherThemeName
  --Default //Default Theme Directory i am currently using
    --css
    --js
    --images
    --views
      --admin (directory)
          --sitesettings (directory)
            --site-settings.tpl (template file) //This Template file will Not Work

如果我将此模板文件移动到父目录admin,如果我调用它,它将起作用,但如果我从sitesettings目录内部调用它,它将不起作用。

我这样称呼它。

function functionName(){
    $data['title']="Some Title";
    $this->parser->parse('admin/sitesettings/site-settings.tpl',$this->data);
}

简单地说,Smarty只允许我在视图文件夹下的层次结构中有一个额外的目录,我想知道是否有任何修复方法,以便我可以在层次结构中有无限或至少更多的目录,这样我就不会搞砸文件系统。


更新: 如果任何人想查看我的项目代码,请转到此GitHub项目。

https://github.com/pakistanihaider/HouseRentSystem

有关此项目的数据库。

http://www.mediafire.com/view/1jp9u906r8i10u0/houserentsystem.sql

注意:无法在此处附加文件,因此已将.sql文件上载到Mediafire并添加了链接。如果有任何规则禁止这样做,管理员当然可以删除链接,但请让我知道给予文件链接的正确方式。


不知何故找到了主要问题,这要归功于@Sauryabhat。 我认为{{extends file='adminLayout.tpl'}}中存在问题 它如何知道文件存在的位置,我的意思是,如果我将文件移动到大多数内部目录中,它如何知道主布局文件退出的位置,它将成为子级。扩展文件时需要定义路径吗?


更新: 我也试图定义布局的路径,但似乎也不适合我。

$this->parser->parse('extends:layouts/adminLayout.tpl|file:systemConfigurationSitePreferences.tpl',$this->data);

如果我将失败放在admin目录中,它会起作用,但如果我将文件移到admin目录的另一个目录中,它就会停止工作。


解决方案

天哪,在这么长的时间里,我几乎尝试了所有的方法,我甚至下载了Zebra CMS来看看为什么有代码可以工作,而不是我的代码,xD我甚至尝试用我的代码更改那里的代码,即使知道它不会解决任何问题,只是希望。XD

但最终我终于看到了真正的问题, 当我尝试将模板文件放入目录的另一个目录中时,相对路径在管理布局中受到干扰。

我在主布局文件中包含了一些单独文件中的文件组件,如菜单选项卡。 E-G:

{{include file="../admin/ui_components/user-media.tpl" name="user media"}}

因此,如果模板位于1个目录中,则模板工作正常,但当我尝试再添加1个目录并将文件放入其中时,路径出错。

CI Smarty最大的问题是,如果TPL文件有任何错误,它永远不会给出错误,只给出空白页。

如果错误系统是好的,我可能会更快地找到解决方案。

总之,现在刚刚添加了基本路径,所以无论我进入多少个目录,都不会有任何问题。

感谢您的所有支持。看来我的赏金白白浪费了..

相关文章