ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] ## 控制器模板方法 ### **模板渲染** #### 类方法渲染 ``` <?php namespace app\home; use denha\Controller; class Hello extends Controller { public function index(){ return $this->view('模板地址'); } } ``` #### 助手函数渲染 `show('模板地址')`; ### **模板地址** 模板内容存在`resources`目录下 以`.html` 文件格式命名 #### **空地址** `$this->show('');` 则根据命名空间和action最终 如实例中模板地址存放位置应该在: resources/home/hello/index.html #### **相对地址** `$this->show('detail');` 则根据命名空间和地址名称组合 当前方法的地址应该在:resources/home/hello/detail.html #### **带后缀地址** `$this->show('detail.html');` 带后缀则直接以绝对路径检索 并且指定后缀名 当前方法地址应该存在 resources/detail.html ### **模板赋值** #### 直接传递 `$this->show('模板地址',['id'=>1]);` 通过控制器 ['id'=>1] 可以将值传递到指定模板页面 >如果引用了Controller类 可以使用 assign类方法传递值 #### 类方法传递 `$this->assign('id',1);` ## 视图模板操作 ### **读取变量值** 在控制器中传了值后 则可以在模板中渲染值 `<p>渲染指定id: {$id}</p> ` 转换成php语言: `<p>渲染指定id: <?php echo $id; ?></p> ` 当前html显示的内容则是 渲染指定id:1 {$id} 将直接转换成id ### **读取数组变量** `<p>渲染指定id: {$data.id}</p>` `<p>渲染指定id: {$data['id']}</p>` 两种方式都可以直接读取数组中 key值为id的值 ### **模板中使用公共方法** `<p>渲染指定id: {:str_replace('1','2',$data.id)}</p>` 转换成php语言: `<p>渲染指定id: <?php str_replace('1','2',$id); ?></p> ` >公共方法可以直接使用php原生方法 也可以直接使用助手函数方法 ### **设置默认值** `<p>渲染指定id: {default:$name|2}</p>` `<p>渲染指定id: {??:$name|2}</p>` 转换成php语言: `<p>渲染指定id: <?php echo $name ?: '2' ?></p> ` `<p>渲染指定id: <?php echo $name ?? '2' ?></p> ` ### **模板语法if** ``` <div> {if $id == 1} <p>id值 == 1</p> {elseif $id == 2} <p>id值 == 2</p> {else} <p>id值 == {$id}</p> {/if} </div> ``` ### **模板语法 loop** 数组循环渲染 ``` <div class="loop"> {loop $ids $key $item} <p>{$key}:{$item.id}</p> <p>{$key}:{$item.name}</p> {/loop} </div> <div class="loop"> {loop $ids $item} <p>{$item.id}</p> <p>{$item.name}</p> {/loop} </div> ``` ### **模板语法include** 引用其他模板 `{include /admin/public/global_css}` 指定地址引用其他模板数据 模板起始地址是项目根目录下的resources目录