自定义框架 使用smarty的一个问题

漫步的猪 2016-06-08 10:15:36
自己写一个小框架,
每次在Indexcontroller.php中使用$this->display()是,都会报错
unlink(Storage/Compile/Home/Index\%%33^33F^33FC67E8%%Login.html.php): No such file or directory.
unlink(Storage/Cache/Home/Index\%2Fmyoschina%2Fframe3.0%2F^%%B5^B56^B5681546%%Login.html): No such file or directory
刷新好几次后正常了,然后在换一个显示页面又报错.
我的smartyView.php 代码
namespace Lib\Core{
class SmartyView{
// 定义一个静态变量,防止频繁创建对象
protected static $smarty=null;
public function __construct(){
// 如果实例化过smarty,不用再次实例化
if(is_null(self::$smarty)){
// 创建smarty对象;
$smarty=new \Smarty();
// 设置smarty参数
// 设置编译目录
$c_dir='Storage/Compile/'.MODUEL.'/'.CONTROLLER;
is_dir($c_dir)||mkdir($c_dir,0777,true);
$smarty->compile_dir=$c_dir;
// 设置模板目录
$t_dir='App/'.MODUEL.'/View/'.CONTROLLER;
is_dir($t_dir)||mkdir($t_dir,0777,true);
$smarty->template_dir=$t_dir;
// 设置缓存文件目录
$ca_dir='Storage/Cache/'.MODUEL.'/'.CONTROLLER;
is_dir($ca_dir)||mkdir($ca_dir,0777,true);
$smarty->cache_dir=$ca_dir;

$smarty->caching=C('SMARTY_CACHE');
$smarty->cache_lifetime=C('SMARTY_CACHE_LIFETIME');
$smarty->left_delimiter=C('LEFT_DELIMITER');
$smarty->right_delimiter=C('RIGHT_DELIMITER');

//局部不缓存(固定写法)
//nocache是一个函数,放在functions.php
$smarty->register_block("nocache", "nocache", false);

// 把smarty对象赋值给静态属性
self::$smarty=$smarty;
}
}

protected function display($tpl=null){
// 如果用户没有传递模板,按照方法名找模板
if(is_null($tpl)) $tpl=ACTION.'.php';
self::$smarty->display($tpl,$_SERVER['REQUEST_URI']);
}
......
IndexController.php中的调用代码
namespace Home\Controller;
use Lib\Core\SmartyView;
class IndexController extends SmartyView{

public function index(){
$this->display('Login2.html');
}
}
.........
我这个哪块出问题了,请求高手赐教
...全文
582 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2016-06-08
  • 打赏
  • 举报
回复
你的 smarty 是如何配置的?
漫步的猪 2016-06-08
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning的回复:
你的 smarty 是如何配置的?
smarty的配置就在smartview那个文件里。控制器直接继承这个类使用的。

4,251

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧