ホームページ  >  記事  >  バックエンド開発  >  thinkphp3.x、thinkphp3.xdisplay_PHPチュートリアルでの表示メソッドとshowメソッドの使用例

thinkphp3.x、thinkphp3.xdisplay_PHPチュートリアルでの表示メソッドとshowメソッドの使用例

WBOY
WBOYオリジナル
2016-07-12 08:52:201457ブラウズ

thinkphp3.x、thinkphp3.xdisplayにおけるdisplayメソッドとshowメソッドの使用例

この記事ではthinkphp3.xにおけるdisplayメソッドとshowメソッドの使用方法について説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

前回の記事でコントローラーとモデルの操作を理解した後、ThinkPHP のビューとは主にテンプレート ファイルとテンプレート エンジンを指します。この記事では、まずテンプレート ファイルとそのレンダリング方法を理解します。出力。

1. テンプレートの定義

テンプレート ファイルをより効果的に管理するために、ThinkPHP はテンプレート ファイルをディレクトリに分割します。 デフォルトのテンプレート ファイル定義ルールは次のとおりです。

テンプレートディレクトリ/[グループ名/][テンプレートテーマ/]モジュール名/オペレーション名+テンプレートサフィックス

デフォルトのテンプレート ディレクトリはプロジェクト内の Tpl です。グループが定義されると、新しいバージョンのテンプレート テーマはデフォルトで空になります (テンプレート テーマ機能が有効になっていないことを示します)。

テンプレート テーマ機能は、複数のテンプレート テーマを切り替えるように設計されています。複数のテンプレート テーマがある場合、DEFAULT_THEME パラメーターを使用してデフォルトのテンプレート テーマ名を設定できます。

各テンプレート テーマの下には、プロジェクトのモジュール名を含むディレクトリがあり、次に各モジュールの特定の操作テンプレート ファイルが含まれます。例:

User モジュールの追加操作に対応するテンプレート ファイルは次のとおりです:

Tpl/User/add.html

テンプレート ファイルのデフォルトのサフィックスは .html ですが、TMPL_TEMPLATE_SUFFIX を通じて別のサフィックスに構成することもできます。たとえば、次のように設定できます:

リーリー

定義後、User モジュールの追加操作に対応するテンプレート ファイルは次のようになります:

Tpl/ユーザー/add.tpl

プロジェクトでモジュール グループ化機能が有効になっている場合 (ユーザー モジュールがホーム グループに属していると仮定)、デフォルトの対応するテンプレート ファイルは次のようになります:

Tpl/Home/User/add.html

グループ モードでは、ディレクトリ構造が深すぎると感じる場合は、TMPL_FILE_DEPR パラメータを設定することで、簡略化されたテンプレートのディレクトリ階層を構成できます。たとえば、次のように設定します。 リーリー

デフォルトのテンプレートファイルは次のようになります:

Tpl/Home/User_add.html

システムにはテンプレート ファイルを自動的に識別するためのルールがあるため、テンプレートのレンダリング出力が簡素化されます。

2. テンプレートのレンダリング

テンプレートを定義した後、display メソッドと show メソッドを通じて出力をレンダリングできます。 display メソッドではテンプレート ファイルを定義する必要がありますが、show メソッドではコンテンツ出力が直接レンダリングされます。

最も一般的に使用されるのは、表示メソッド、呼び出し形式です:

最初のタイプ:

display('[トピック:][モジュール:][オペレーション]'[,'文字エンコーディング'][,'出力タイプ'])

2 番目のタイプ:

display('完全なテンプレートファイル名'[,'文字エンコーディング'][,'出力タイプ'])

以下はパラメータを指定しない最も一般的な使用法です: リーリー

は、システムがデフォルトのルールに従ってテンプレート ファイルを自動的に検索することを意味します。そのため、通常、表示メソッドはパラメーターなしで対応するテンプレートを出力できます。これはテンプレート出力を使用する最も簡単な方法です。

テンプレート ファイルがテンプレート定義ルールに従って定義されていない場合、または他のモジュールでテンプレートを呼び出す必要がある場合は、次を使用できます:

リーリー

は、現在のモジュールの下で編集テンプレートを呼び出すことを意味します

リーリー

は、Member モジュールの下で読み取りテンプレートを呼び出すことを意味します。

テンプレート テーマ関数を使用する場合は、テーマ間呼び出しもサポートできます。次を使用します。

リーリー

は、テーマの下でUserモジュールの編集テンプレートを呼び出すことを意味します。

このメソッドのレンダリング出力には、テンプレート ファイルのパスとサフィックスを書き込む必要はありません。正確に言うと、ここでのモジュールと操作には、必ずしも対応するモジュールや操作がある必要はありません。単にディレクトリ名とファイル名だけです。たとえば、プロジェクトには Public モジュールのメニュー操作はおろか、Public モジュールがまったくない場合もありますが、それでも使用できます

リーリー

このテンプレート ファイルをエクスポートします。これを理解すると、テンプレートの出力が明確になります。

表示メソッドは、出力をレンダリングする際の出力エンコーディングとタイプの指定をサポートしています。例:

リーリー

出力 XML ページのタイプを示します (アプリケーションのニーズを満たすために多くのタイプを出力できます)。

テンプレート ディレクトリがカスタマイズされている場合、またはモジュールに従ってサブディレクトリに保存する必要がない場合は、現時点では、別の方法を使用して処理する必要があります。これを使用して、直接テンプレート ファイル名を渡すだけです。例:

リーリー

この方法では、テンプレートのパスとサフィックスを指定する必要があります。ここでのパブリック ディレクトリは、現在のプロジェクト エントリ ファイルの場所の下にあります。別のサフィックス ファイルの場合は、次のような直接出力もサポートされます。 リーリー

./Public/menu.tpl が実際に存在するテンプレート ファイルである限り。

テンプレート ファイルの場所は、テンプレート ディレクトリではなく、プロジェクトのエントリ ファイルに相対的なものであることに注意してください。

还有一种情况是,你需要获取渲染模板的输出内容,就可以使用fetch方法,fetch方法的用法和display基本一致,区别就在于fetch方法渲染后不是直接输出,而是返回渲染后的内容,例如:

$content = $this->fetch('Member:edit');

使用fetch方法获取渲染内容后,你可以进行过滤和替换等操作,用于对模板输出的复杂需求。

如果你没有定义任何模板文件,或者把模板内容存储到数据库中的话,你就需要使用show方法来渲染输出了,show方法的调用格式:

show('渲染内容'[,'字符编码'][,'输出类型'])

例如,

$this->show($content);

也可以指定编码和类型:

$this->show($content, 'utf-8', 'text/xml'); 

show方法中的内容也可以支持模板解析。

三、模板赋值

我们知道了如何渲染模板输出,但是如果要在模板中输出变量,必须在在控制器中把变量传递给模板,提供了assign方法对模板变量赋值,无论何种变量类型都统一使用assign赋值。

$this->assign('name',$value);
//下面的写法是等效的:
//$this->name = $value;

assign方法必须在display和show方法之前调用,并且系统只会输出设定的变量,其它变量不会输出(系统变量可以通过特殊的标签输出,可以无需赋值模板变量),一定程度上保证了变量的安全性。

赋值后,就可以在模板文件中输出变量了,如果使用的是内置模板的话,就可以这样输出:

{$name}

如果要同时输出多个模板变量,可以使用下面的方式:

$array['name'] = 'thinkphp'; 
$array['email'] = 'liu21st@gmail.com'; 
$array['phone'] = '12335678'; 
$this->assign($array);

这样,就可以在模板文件中同时输出name、email和phone三个变量。

模板变量的输出根据不同的模板引擎有不同的方法,我们在后面会专门讲解内置模板引擎的用法。如果你使用的是PHP本身作为模板引擎的话 ,就可以直接在模板文件里面输出了:

<&#63;php echo $name.'['.$email.''.$phone.']';&#63;>

如果采用内置的模板引擎,可以使用:

{$name} [ {$email} {$phone} ]

输出同样的内容。

关于更多的模板标签使用,我们会在后面模板标签中详细讲解。

四、模板替换

在进行模板输出之前,系统还可以对渲染的模板结果进行一些模板的特殊字符串替换操作,也就是实现了模板输出的替换和过滤。这个机制可以使得模板文件的定义更加方便,默认的替换规则有:

../Public: 会被替换成当前项目的公共模板目录 通常是 /项目目录/Tpl/当前主题/Public/

__TMPL__: 会替换成项目的模板目录 通常是 /项目目录/Tpl/当前主题/

(注:为了部署安全考虑,../Public和__TMPL__不再建议使用)

__PUBLIC__:会被替换成当前网站的公共目录 通常是 /Public/

__ROOT__: 会替换成当前网站的地址(不含域名)

__APP__: 会替换成当前项目的URL地址 (不含域名)

__GROUP__:会替换成当前分组的URL地址 (不含域名)

__URL__: 会替换成当前模块的URL地址(不含域名)

__ACTION__:会替换成当前操作的URL地址 (不含域名)

__SELF__: 会替换成当前的页面URL

注意这些特殊的字符串是严格区别大小写的,并且这些特殊字符串的替换规则是可以更改或者增加的,我们只需要在项目配置文件中配置TMPL_PARSE_STRING就可以完成。如果有相同的数组索引,就会更改系统的默认规则。例如:

'TMPL_PARSE_STRING' =>array( 
  '__PUBLIC__' => '/Common', // 更改默认的/Public 替换规则 
  '__JS__' => '/Public/JS/', // 增加新的JS类库路径替换规则 
  '/Uploads' => '/Uploads', // 增加新的上传路径替换规则 
)

有了模板替换规则后,页面上所有的__PUBLIC__ 字符串都会被替换,那如果确实需要输出__PUBLIC__ 字符串到模板呢,我们可以通过增加替换规则的方式,例如:

'TMPL_PARSE_STRING' =>array( 
  '--PUBLIC--' => '__PUBLIC__', // 采用新规则输出/Public字符串 
)

这样增加替换规则后,如果我们要输出__PUBLIC__ 字符串,只需要在模板中添加--PUBLIC--,其他替换字符串的输出方式类似。

五、总结

通过本篇的学习,我们大概掌握了如何定义模板文件和进行模板渲染输出,以及如何赋值模板变量,后面我们将会学习如何在模板文件中使用标签来简化你的书写。

PS:这里推荐几款本站的格式化美化工具,相信大家在以后的开发中能够用得上:

php代码在线格式化美化工具:
http://tools.jb51.net/code/phpformat

JavaScriptコードの美化/圧縮/フォーマット/暗号化ツール:
http://tools.jb51.net/code/jscompress

オンライン XML フォーマット/圧縮ツール:
http://tools.jb51.net/code/xmlformat

JSON コードのフォーマットおよび美化ツール:
http://tools.jb51.net/code/json

オンライン XML/JSON 変換ツール:
http://tools.jb51.net/code/xmljson

SQL コードのオンライン書式設定および美化ツール:
http://tools.jb51.net/code/sqlcodeformat

より thinkPHP 関連のコンテンツに興味のある読者は、このサイトの特別トピック「ThinkPHP 入門チュートリアル」、「ThinkPHP 一般的なメソッドの概要」、「Smarty テンプレートの基本チュートリアル」、および「PHP テンプレート テクノロジの概要」をチェックしてください。

この記事が皆さんの ThinkPHP フレームワークに基づく PHP プログラムの設計に役立つことを願っています。

www.bkjia.com本当http://www.bkjia.com/PHPjc/1127838.html技術記事 thinkphp3.x、thinkphp3.xdisplayにおけるdisplayメソッドとshowメソッドの使用例 この記事ではthinkphp3.xにおけるdisplayメソッドとshowメソッドの使用方法について説明します。参考のために皆さんと共有してください...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。