多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 安装smarty 通过composer安装 ~~~bash composer require smarty/smarty ~~~ # 创建一个服务 ~~~go php think make:service SmartyService ~~~ SmartyService.php ~~~php <?php declare (strict_types=1); namespace app\service; class SmartyService extends \think\Service { protected $smarty; /** * 注册服务 * * @return mixed */ public function register() { //初始化Smarty $this->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` ~~~php <?php // +---------------------------------------------------------------------- // | 模板设置 // +---------------------------------------------------------------------- return [ //是否缓存 'caching' => 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, ]; ~~~ # 使用 在控制器中如下 ~~~lisp app('smarty')->display('index/index/index.tpl', compact('articles')); ~~~ ## 注意 * thinkphp6.0的特性不能在控制器中使用 exit ,die 等终止脚本的函数 * 如果自定义处理报错中需要使用exit()将结果输出,否则会重复渲染页面。 # 公共数据赋值 可以创建一个`BaseController`控制器在构造函数中赋值 ~~~objectivec //一些公共的数据 app('smarty')->assign('index_info', session('index_info')); ~~~ 这样就能在模板任意地方使用`<{$index_info->nickname}>`