阅读 246

smarty在thinkphp6.0中的最佳实践

安装smarty

通过composer安装

composer require smarty/smarty

创建一个服务

php think make:service SmartyService

SmartyService.php

smarty = new \Smarty();
        // 绑定类实例
        $this->app->bind(‘smarty‘, $this->smarty);
    }

    /**
     * 执行服务 ,配置Smarty
     *
     * @return mixed
     */
    public function boot()
    {
        $this->smarty->caching = config(‘smarty.caching‘);
        $this->smarty->cache_lifetime = config(‘smarty.cache_lifetime‘);
        $this->smarty->setTemplateDir(config(‘smarty.template_dir‘));
        $this->smarty->setCompileDir(config(‘smarty.compile_dir‘));
        $this->smarty->cache_dir = config(‘smarty.cache_dir‘);
        $this->smarty->config_dir = config(‘smarty.config_dir‘);
        $this->smarty->setLeftDelimiter(config(‘smarty.left_delimiter‘));
        $this->smarty->setRightDelimiter(config(‘smarty.right_delimiter‘));
        $this->smarty->auto_literal = config(‘smarty.auto_literal‘);

    }
}

创建config配置文件

在config目录下新建smarty.php

 false,
    //缓存周期(开启缓存生效)
    ‘cache_lifetime‘ => 120,
    //  设置模板基础路径
    ‘template_dir‘ => root_path(‘view‘),
    // 模板编译路径
    ‘compile_dir‘ => runtime_path(‘smarty/compile‘),
    // 缓存目录
    ‘cache_dir‘ => runtime_path(‘smarty/cache‘),
    // 配置目录(比较鸡肋,建议:使用框架的config就好了)
    ‘config_dir‘ => config_path(‘smarty‘),
    // 模板引擎左边标记
    ‘left_delimiter‘ => ‘<{‘,
    // 模板引擎右边标记
    ‘right_delimiter‘ => ‘}>‘,
    //空格策略
    ‘auto_literal‘ => false,
];

使用

在控制器中如下

app(‘smarty‘)->display(‘index/index/index.tpl‘, compact(‘articles‘));

注意

  • thinkphp6.0的特性不能在控制器中使用 exit ,die 等终止脚本的函数
  • 如果自定义处理报错中需要使用exit()将结果输出,否则会重复渲染页面。

公共数据赋值

可以创建一个BaseController 控制器在构造函数中赋值

//一些公共的数据
app(‘smarty‘)->assign(‘index_info‘, session(‘index_info‘));

这样就能在模板任意地方使用 <{$index_info->nickname}>

原文:https://www.cnblogs.com/lujiahao/p/15219647.html

文章分类
代码人生
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐