我在用CI Smarty
https://github.com/Vheissu/Ci-Smarty
据我所知,这有两个问题。但我打开这个问题的问题是,如果.tpl
文件在另一个目录的目录中,我就不能加载.tpl
文件。
例如,这是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只允许我有1视图文件夹下的层次结构额外的目录,我想知道是否有任何解决这个问题,这样我就可以在层次结构中有无限或至少更多的目录,所以我没有搞砸了文件系统。
更新:如果有人想看我的项目代码,请到这个GitHub项目。
https://github.com/pakistanihaider/HouseRentSystem
有关此项目的数据库。
http://www.mediafire.com/view/1jp9u906r8i10u0/houserentsystem.sql
不知何故发现了主要问题感谢@Sauryabhatt。我认为问题存在于{{extends file='adminLayout.tpl'}}
如何知道文件存在的地方,我的意思是,如果我把文件移动到最内部的目录,它将如何知道主布局文件退出到哪里,它将是一个孩子?我需要定义一个路径时,扩展一个文件?
**更新:**还尝试定义布局的路径,但似乎它也没有为我工作。
$this->parser->parse('extends:layouts/adminLayout.tpl|file:systemConfigurationSitePreferences.tpl',$this->data);
它的工作,如果我把失败在管理目录,但停止工作,如果我把文件内的另一个目录的管理目录。
5条答案
按热度按时间s5a0g9ez1#
天啊,经过这么长时间,我尝试了几乎所有的东西,我甚至下载了斑马CMS,看看为什么有代码的工作,而不是我的,我甚至尝试改变有代码与我的,即使知道它不会解决任何问题,但只是希望. XD
但最终我终于看到了真实的的问题,当我试图把模板文件放在一个目录的另一个目录中时,相对路径在管理布局中受到干扰。
我有一些文件组件,如菜单选项卡在单独的文件中,我包括在主布局文件。例如:
因此,模板是工作,如果它是在1个目录,但当我试图添加1个目录,并把它里面的文件,路径给错误。
CI Smarty最大的问题是,如果有任何关于tpl文件的错误,它从来没有给出错误,只给白色空白页。
如果错误系统是好的,我可能会更快地找到解决方案。
无论如何,现在刚刚添加了基本路径,所以无论我进入多少目录,它都不会给予任何问题。
谢谢你的支持.看来我的赏金被浪费了.
svdrlsy42#
变更
到这个
以及
变成这样
然后在
site_helper.php
文件中定义以下代码最后在
MY_Controller
中定义主题那么你就都完成了。试着运行这个应用程序。希望它现在对你有用。
lmvvr0a83#
答案似乎很简单:一个拼写错误。您将模板文件的路径写错了。根据您提供的目录结构,您应该有以下内容:
而不是这个:
我还做了一个快速CI设置与CI-智能,以确保它的工作只是罚款与多个子目录。
bihw5rsg4#
检查库,我认为您应该修改文件
libraries/MY_Parser
(https://github.com/Vheissu/Ci-Smarty/blob/master/libraries/MY_Parser.php)。在那里,您可能会发现以下方法:当你调用
parse
时,它会调用_find_view
,从两个地方加载路径:第307行,加载其中,_template_locations是在第375行中方法
_update_theme_paths()
中加载的数组:在行314中,用$new_locations:
我还没有测试它,抱歉,但我认为,如果你在那里添加文件夹的路径,它会找到你的文件,你可以增加你的目录路径。一个改进,它将自动添加你的文件夹结构到方法
_update_theme_paths()
的数组,检查:PHP SPL RecursiveDirectoryIterator RecursiveIteratorIterator retrieving the full tree并将其添加到_update_theme_paths()
,它会自动执行此操作,XD5sxhfpxr5#
如果您的smarty版本是2.1或更高版本,则无需写入目录名,只需写入文件名即可。
使用此
代替
前端控制器代码
index.php函数的代码