<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                視圖功能由`\think\View`類配合視圖驅動(模板引擎)類一起完成,目前的內置模板引擎包含PHP原生模板和Think模板引擎。 因為新版的控制器可以無需繼承任何的基礎類,因此在控制器中如何使用視圖取決于你怎么定義控制器。 ## **沒有繼承`\think\Controller`類** ``` return new \think\View\View()->fetch('index'); ``` ## **繼承`\think\Controller`類** 如果你的控制器繼承了`\think\Controller`類的話,則無需自己實例化視圖類,可以直接調用控制器基礎類封裝的相關視圖類的方法。 ~~~ // 渲染模板輸出 return $this->fetch('hello',['name'=>'thinkphp']); 或者 return $this->view->fetch('hello',['name'=>'thinkphp']); ~~~ 下面的方法可以直接被調用: | 方法 | 說明 | | --- | --- | | fetch | 渲染模板輸出 | | display | 渲染內容輸出 | | assign | 模板變量賦值 | | engine | 初始化模板引擎 | 如果需要調用View類的其它方法,可以直接使用`$this->view`對象: ## **助手函數** 無論你是否繼承`think\Controller`類,助手函數都可以使用,也是最方便的一種。可以完成相同的功能: ~~~ return view('hello',['name'=>'thinkphp']); ~~~ 助手函數調用格式: > ### view('\[模板文件\]'\[,'模板變量(數組)'\]\[,模板替換(數組)\]) # **模板賦值** 賦值完成后通過view模版調用 ### **`assign($name, $value = '')`方法** ~~~ namespace index\app\controller; class Index extends \think\Controller { public function index() { // 模板變量賦值 $this->assign('name','ThinkPHP'); $this->assign('email','thinkphp@qq.com'); // 或者批量賦值 $this->assign([ 'name' => 'ThinkPHP', 'email' => 'thinkphp@qq.com' ]); // 模板輸出 return $this->fetch('index'); } } ~~~ ### 傳入參數方法 方法fetch 及 display 均可傳入模版變量,例如 ~~~ namespace app\index\controller; class Index extends \think\Controller { public function index() { return $this->fetch('index', [ 'name' => 'ThinkPHP', 'email' => 'thinkphp@qq.com' ]); } } ~~~ ~~~ class Index extends \think\Controller { public function index() { $content = '{$name}-{$email}'; return $this->display($content, [ 'name' => 'ThinkPHP', 'email' => 'thinkphp@qq.com' ]); } } ~~~ ### 助手函數 如果使用view助手函數渲染輸出的話,可以使用下面的方法進行模板變量賦值: ~~~ return view('index', [ 'name' => 'ThinkPHP', 'email' => 'thinkphp@qq.com' ]); ~~~ ### `share`方法 `V5.0.4+`開始,支持在任何地方使用靜態方法進行模板變量賦值,例如: ~~~ think\View::share('name','value'); // 或者批量賦值 think\View::share(['name1'=>'value','name2'=>'value2']); ~~~ # **模板渲染(模版輸出)** 渲染模板最常用的是繼承系統的控制器基類后調用`fetch`方法,渲染輸出不需要寫模板文件的路徑和后綴.調用格式: `fetch($template = '', $vars = [], $replace = [], $config = [], $renderContent = false)` fetch(['模板文件'][,模板變量(數組)][, '替換內容']) ~~~ // 不帶任何參數 自動定位當前操作的模板文件 // 當前模塊/默認視圖目錄/當前控制器(小寫)/當前操作(小寫).html //如getHelloWorld方法對應的模版文件則是get\_hello\_world.html return $this->fetch(); // 指定模板輸出 //表示調用當前控制器下面的edit模板 return $this->fetch('edit'); //表示調用Member控制器下面的read模板 return $this->fetch('member/read'); return $this->fetch('admin@member/edit'); //你的項目里面可能根本沒有Public控制器,更沒有Public控制器的menu操作,但是一樣可以使用 return $this->fetch('public/menu'); //支持在渲染輸出的時候傳入模板變量 return $this->fetch('read', ['a'=>'a','b'=>'b']); //支持從視圖根目錄開始讀取模板 //當前模塊(admin)/默認視圖目錄(view)/menu.html $this->fetch('/menu'); // 指定一個完整的模板文件位置,這種方式需要帶模板路徑和后綴 //./是相對于應用的入口文件如默認在public下的index.php return $this->fetch('./template/public/menu.html'); //全路徑模板調用: return $view->fetch(APP_PATH.request()->module().'/view/public/header.html'); ~~~ # **模板輸出替換** `v5.0.4+`增加`__ROOT__``__STATIC__``__JS__`和`__CSS__`內置替換規則 ``` __ROOT__ :項目目錄 __STATIC__ :項目目錄下的static目錄 __JS__ :項目目錄下的static/js目錄 __CSS__:項目目錄下的static/css目錄 ``` 對視圖輸出的內容進行字符替換 ~~~ return $this->fetch('member/read',[],['__PUBLIC__'=>'/public/']); ~~~ ### **全局替換** 可以直接在配置文件中添加: ~~~ 'view_replace_str' => [ '__PUBLIC__'=>'/public/', '__ROOT__' => '/', ] ~~~ 然后就可以直接使用 ~~~ namespace index\app\controller; class Index extends \think\Controller { public function index() { $this->assign('name','thinkphp'); return $this->fetch('index'); } } ~~~ 助手函數`view`也支持全局配置參數`view_replace_str`的設置,如果需要設置不同的替換參數,可以使用: ~~~ //在渲染模板或者內容輸出的時候就會自動根據設置的替換規則自動替換![](https://img.kancloud.cn/b1/69/b169246cb12d8bffc03fbc32ead6f1a4_1366x768.png) return view('index',['name'=>'thinkphp'],['__PUBLIC__'=>'/public/']); ~~~ ## **自定義模板路徑** 如果你的模板文件位置比較特殊或者需要自定義模板文件的位置,可以采用下面的幾種方式處理。 ### 渲染完整模板 ~~~ return $this->fetch('./template/public/menu.html'); ~~~ 這種方式需要帶模板路徑和后綴指定一個完整的模板文件位置,這里的`template/public`目錄是位于當前項目入口文件位置下面。如果是其他的后綴文件,也支持直接輸出,例如: ~~~ return $this->fetch('./template/public/menu.tpl'); ~~~ 只要`./template/public/menu.tpl`是一個實際存在的模板文件。 > 要注意模板文件位置是相對于應用的入口文件,而不是模板目錄。 ## 渲染內容 如果希望直接解析內容而不通過模板文件的話,可以使用`display`方法: ~~~ return $this->display($content,$vars); ~~~ # **內置模板引擎** 可以通過下面的幾種方式對模板引擎進行初始化。 ### **①配置文件** 在應用配置文件中配置`template`參數即可,然后調用視圖類進行操作或者使用`view`助手函數的時候會自動實例化相關的模板引擎并傳入參數例如: ~~~ 'template' => [ // 默認模板渲染規則 1 解析為小寫+下劃線 2 全部轉換小寫 'auto_rule' => 1, // 模板引擎類型 支持 php think 支持擴展 'type' => 'Think', // V5.0.3+ 視圖基礎目錄,配置目錄為所有模塊的視圖起始目錄 //用于定義全局的視圖根目錄,然后模塊作為子目錄 'view_base' => '', // 當前模塊的模板視圖目錄 留空為自動獲取 'view_path' => '', // 模板后綴 'view_suffix' => 'html', // 模板文件名分隔符 'view_depr' => DS, // 模板引擎普通標簽開始標記 'tpl_begin' => '{', // 模板引擎普通標簽結束標記 'tpl_end' => '}', // 標簽庫標簽開始標記 'taglib_begin' => '{', // 標簽庫標簽結束標記 'taglib_end' => '}', ], ~~~ ### 視圖根目錄 視圖文件的根目錄默認情況下位于模塊的`view`目錄,每個模塊的視圖目錄可以通過模板參數`view_path`自定義。 `V5.0.3+`版本開始,新增了`view_base`模板引擎參數,可以用于定義全局的視圖根目錄,然后模塊作為子目錄。 ### **②調用engine方法初始化** 視圖類也提供了`engine`方法對模板解析引擎進行初始化或者切換不同的模板引擎,例如: ~~~ return $this->engine('php')->fetch(); ~~~ 表示當前視圖的模板文件使用原生php進行解析。 ## **③使用第三方模板引擎** 官方擴展庫中提供了一個類似于`angularjs`語法的模板引擎`think-angular`,具體可以參考[參考手冊](http://www.hmoore.net/shuai/php-angular)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看