TP5控制器中使用視圖的三種方法


1、直接實例化視圖類

1、視圖類: thinkphp/library/think/View.php;
2、命名空間: use think\View;
3、實例化: 動態 new View(); 靜態 View::instance();
4、常用方法: fetch()渲染模板, display()渲染內容, assign()模板賦值

在index/controller/index.php中:

  1.  
    <?php
  2.  
    namespace app\index\controller;
  3.  
    use think\View;
  4.  
    class Index
  5.  
    {
  6.  
    public function index()
  7.  
    {
  8.  
    //動態創建
  9.  
    //$view = new View();
  10.  
    //靜態創建
  11.  
    $view = View::instance();
  12.  
    //模板賦值
  13.  
    $view -> assign( 'domain','www.php.cn');
  14.  
    //渲染模板
  15.  
    return $view -> fetch();
  16.  
    }
  17.  
    }
  18.  
    ?>

在application\index\view\index\index.html中:

  1.  
    <p>網站域名:<span style="color:red">{$domain}</span></p>
  2.  
    <p>網站名稱:<span style="color:red">{$siteName}</span></p>

2、繼承控制器基類Controller

1、控制器類:thinkphp/library/think/Controller.php;
2、命名空間:use think\Controller;
3、實例化:$this->view;//可訪問View類所有屬性或方法
4、常用方法:$this->fetch()渲染模板,$this->display()渲染內容,$this->assign()模板賦值,$this->engine()模板引擎

在index.php中:

  1.  
    <?php
  2.  
    namespace app\index\controller;
  3.  
    use think\Controller;
  4.  
    class Index extends Controller
  5.  
    {
  6.  
    public function index()
  7.  
    {
  8.  
    //$this->view===>視圖對象
  9.  
    //$this->view->assign('siteName','php中文網');
  10.  
    //$this->view->assign('domain','www.php.cn');
  11.  
    $this->assign('siteName','php中文網'); //用這種就可以,省事
  12.  
    $this->assign('domain','www.php.cn'); //用這種就可以,省事
  13.  
    //渲染模板
  14.  
    //return $this->view->fetch();
  15.  
    return $this->fetch(); //這樣就行了
  16.  
    }
  17.  
    }
  18.  
    ?>

3、助手函數view()

1、不用繼承Controller基類,不用實例化View類,都可以使用;
2、僅適合於模板渲染,功能單一,不能加載配置;
3、語法:view([模板文件],[模板變量數組],[模板替換數組]);
4、使用方法實例:view('user',['name'=>'tp5'],['SITE'=>'php.cn']);
所以,index.php文件夾中就變為了:

  1.  
    <?php
  2.  
    namespace app\index\controller;
  3.  
    class Index
  4.  
    {
  5.  
    public function index()
  6.  
    {
  7.  
     
  8.  
    return view('index',[
  9.  
    'domain'=>'php.cn',
  10.  
    'siteName'=>'php中文網'
  11.  
    ]);
  12.  
    }
  13.  
    }
  14.  
    ?>

總結:在控制器使用視圖來調用模板,有三種方法:實例化視圖類的規范模式,基類繼承的經典模式,助手函數的快捷模式,新人推薦基類繼承方式,但長遠來看,實例化視圖類應該是發展趨勢,助手函數早晚會消失~~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM