thinkPHP-ビューとテンプレート

6194 ワード

表示
indexフォルダの下にviewフォルダを新規作成し、コントローラ内のクラスの名前と一致するindexフォルダ(小文字)を新規作成します.index.html(メソッド名と一致)をビュー出力のデフォルトエンジンとして新規作成します.
  • はcontrollerクラスを継承し、indexコントローラでuse thinkcontrollerクラスを使用し、Indexクラスはcontrollerクラスを継承し、コントローラのメソッドを使用するとビューのテンプレートファイル
  • が呼び出されます.
    use think\Controller;
    
    class Index extends Controller
    {
        public function index()
        {
         $name='GG';
         $email='[email protected]';
         $this->assign('name',$name);
         $this->assign('email',$email);
         return $this->fetch();
            $this->db();
        }
    
  • テンプレートファイルでデータ
  • を呼び出す.
        {$name}
        
    {$email}
  • fetchでファイルを構成しない場合、デフォルトテンプレート/view/index/indexに自動的に位置決め.html(view/コントローラ名/メソッド名)は、1つのtestが入力されるとview/index/test(/view/コントローラ名/入力名)
  • に定義されます.
    return $this->fetch('test');
    
  • fetchはまた、モジュール間でテンプレート(/view/user/user.html)
  • を呼び出すこともできる.
    return $this->fetch('user/user')
    
  • fetchは、テンプレート変数に直接入力もよく、第1のパラメータはテンプレート名であり、第2のパラメータは、入力データ
  • である.
    return $this->fetch('index/index',[
               'name'=>'Haha',
               'email'=>'[email protected]'
            ]);
    
  • アシスタント関数viewを使用して出力をレンダリングする(fetchと同様)
  • return view('index/index',[
               'name'=>'Haha',
               'email'=>'[email protected]'
            ]);
    

    かたわく
    ThinkPHPにはXMLベースのテンプレートエンジンが内蔵されています
  • テンプレートファイルはビューディレクトリのhtmlファイルであり、通常変数出力{Think}($Thinkで始まる)、出力定数出力を構成する:class外部でdefineを使用して定数の名前と値を定義し、テンプレートで
  • を使用する.
    define('APP_PA','      ');
    
        {$Think.APP_PA}
    
  • は関数を用いる、テンプレートには関数を用いる、例えばmd 5暗号化変数
  • を用いる.
    {$name|md5}
    
  • 1 1つの関数が複数の関数を呼び出す必要がある場合、最初のパラメータはy-m-dで、2番目のパラメータは前の$ctimeで、###で変数の位置をマークします.複数の関数を使用するフィルタリングも可能であり、複数の|分割を使用すれば
  • である.
    {$ctime|date="y-m-d G:i:s",###}
    

    あるいは、複数の関数をネストする方法で複数回フィルタリングすることもできます.
    {:substr(strtoupper(md5($name)),0,3)}
    

    げんじしゅつりょく
  • literalラベルを使用すると、特定のデータ
  • を出力することなく$nameラベルがそのまま出力されます.
    {literal}
        {$name}
    
    {/literal}
    
  • コード注釈は{/ここでは注釈/}を使用する.注記記号と括弧の間には、スペース
  • は使用できません.
    テンプレートレイアウト
  • グローバル構成方式;テンプレートレイアウトを開き、layout_を開きます.onモジュールの前にデフォルトでは/view/index/index.htmlファイルがレンダリングされ、開くと/view/layout.htmlがレンダリングされます.テンプレートレイアウトは他のテンプレートと似ていますが、layoutテンプレートを読み込むとindex.htmlファイルが解析され、解析された内容が{CONTENT}に置き換えられます.で、index.htmlファイルにもhtmlタグ
  • は不要です.
    'template' => [ 'layout_on' => true, 'layout_name' => 'layout', ]
    
    
    
        
            
    
    
      
    {__CONTENT__}
    1. 如果不需要使用模板布局功能,就在模板文件的开头加上{NOLAYOUT}字符串,比如:如果在index.html文件中加入{NOLAYOUT},即使开启模板布局功能,也不会加载模板布局
    2. 模板标签的方式,不需要在配置文件设置任何参数,不需要开启layout;关闭模板布局,然后在index.html文件的开头加上layout,name表示需要加载的模板文件的名字

    {layout name='layout'}

    1. 使用layout控制布局模板,在控制器中使用layout方法,layout方法中可以添加true/false选择是否开启模板布局,也可以传入布局的文件名称选择布局文件
            $this->view->engine->layout(true);
            return $this->fetch('index',[
                'name'=>'SSS',
                'ctime'=>time()
            ]);
    

    テンプレートの継承
  • テンプレートの継承とクラスの継承は同様で、基礎のモジュールと関連するブロックを定義して、サブモジュールはこれらのブロックを再ロードすることができて、ブロックは{block}{/block}から構成して、新しいbaseファイルを基礎のモジュールとしてindex.htmlではテンプレートの継承が使用され、indexモジュールのスタイルは完全にbaseの負のモジュールのスタイルです.サブモジュールの他の内容は
  • を表示しません.
    {block name='head'}
    

    {/block}
    {block name='footer'}

    {/block}
    {extend name='base'/}
    
  • サブモジュールに同じ構造を導入する、スタイルとコンテンツ情報を修正すると、サブモジュールは修正後のスタイル
  • となる.
    {block name='head'}
    

    {/block}
    {block name='footer'}

    {/block} {extend name='base'/}
  • の内容が統合する、サブモジュールに{block}タグが使用されると、サブモジュールのヘッダ情報とベースモジュールのヘッダ情報
  • が同時に表示される.
    {block name='head'}{__block__}
    

    {/block}
    {block name='footer'}

    {/block}

    ファイルを含める
  • モジュールに含まれる他のモジュールファイルはincludeを使用するもので、テンプレートレイアウトとテンプレート継承
  • は使用できません.
    {include file="../application/index/view/index/test.html" /}
    

    内蔵ラベル
  • は循環ラベルvolistを出力し、offsetは数番目からクエリー(含まない)を表し、lengthはクエリーの長さを表し、データのエントリ数
  • を表す.
    $list=UserModel::all();
                $this->assign('list',$list);
                echo gettype($list).'
    '; return $this->fetch();
    
    {volist name='list' id='vo' offset='1' length='1'}
          {$vo.id}===>{$vo.name}
    {/volist}
    
    

    ルーティング規則
  • はroute.phpプロファイルではルーティングルールを構成し、トップページに戻るデータ
  • Route::get('/',function(){
        return 'Hello,world!';
    });
    
  • アクセス一つよコントローラの中の方法で、URLの後で直接new/1(任意の1つのデータ)を入力して、indexモジュールの下のnewsコントローラの中のlist方法にアクセスします;第3のパラメータは要求方法(GET、POSTなど、要求タイプは大文字でなければなりません)
  • Route::rule('new/:id','index/News/read');
    

    Route呼び出しメソッドを直接使用して要求方式を規定することもできます
    Route::get('new/:id','index/News/read');