ホームページ  >  記事  >  バックエンド開発  >  PHPテンプレートエンジンsmartyの組み込み機能の1つ

PHPテンプレートエンジンsmartyの組み込み機能の1つ

黄舟
黄舟オリジナル
2016-12-20 10:55:411287ブラウズ

Smarty にはいくつかの組み込み関数が付属しています。
組み込み関数はテンプレート言語の一部です。
ユーザーは組み込み関数と同じ名前のカスタム関数を作成したり、組み込み関数を変更したりすることはできません。 、if、elseif、else、ldelim、rdelim、リテラル、php、section、sectionelse、strip およびその他の組み込み関数については、php テンプレート エンジン Smarty の組み込み関数 2 を参照してください)
#capture function
config_load
foreach 、foreachelse
include
include_php

capture
属性名 タイプ 必須 デフォルトの説明
name string デフォルトなし キャプチャされたブロックの名前
assign string いいえ n/a キャプチャされた出力を割り当てる変数名

は属性のタイプです必須? デフォルト値の説明

name string デフォルトなし データ収集領域名
assign string いいえ n/a 変数名に割り当てられたデータ収集領域はどこですか [テスト対象]

キャプチャ関数の機能はデータをキャプチャすることですテンプレートによって出力され、ページに出力する代わりに変数に保存されます。

Any {capture name="foo"} と {/capture} の間のデータは、変数 $foo に保存されます。 name 属性。
$smarty.capture.foo を通じてテンプレート内のこの変数にアクセスします。
name 属性が指定されていない場合、関数はデフォルトでパラメータとして「default」を使用します。
{capture} はペアで指定する必要があります。は、 {/capture} で終わり、関数をネストすることはできません。
例:
{* この例は、コンテンツをキャプチャした後、データを含むテーブルの行を出力します。コンテンツがキャプチャされない場合、何も出力されません。 }
{capture name=banner}
{include file="get_banner.tpl"}
{/capture}
{if $smarty .capture.banner ne ""}


{$ Smarty.capture.banner}


{/if}

config_load
from 設定ファイルへの変数のロード
属性タイプにデフォルト値の説明が必要かどうか
ファイル文字列 はいn/a 含める設定ファイルの名前
section string いいえ n/a 設定ファイルにロードするセクションの名前
scope string no local データのロード 変数のスコープはローカル、親、またはグローバルである必要があります.local は、変数のスコープが現在のテンプレートであることを示します。parent は、変数のスコープが現在のテンプレートおよび現在のテンプレートの親テンプレート (現在のテンプレートを呼び出すテンプレート) であることを示します。変数はすべてのテンプレートです。
global boolean No No ロードされた変数がグローバルに表示されるかどうかを示します (scope=parent と同等)。 注:scope 属性が指定されている場合、この属性は設定できますが、テンプレートは属性値と Subject を無視します。スコープ属性に。

例:
{config_load file="colors.conf"}

{#pageTitle#}







最初 Last住所



プロフィール可能複数含まれるこのとき、追加の属性セクションを使用して、どの部分から変数を取得するかを指定できます。

注: 構成ファイル内のセクションとテンプレートの組み込み関数セクションは名前が同じであるだけで、何も行いません。お互いに。
例:
{config_load file="colors.conf" section="Customer"}

{#pageTitle#}



最初< /td> ,foreachelse

foreach は、セクション以外にループを処理するための別のソリューションです (さまざまなニーズに応じて異なるソリューションを選択してください)。
foreach は、単純な配列を処理するために使用されます (配列内の要素の型は同じです)。欠点は、単純な配列のみを処理できることです。
foreach は /foreach とペアで使用する必要があり、
name 属性は任意に指定する必要があります (文字、数字、およびアンダースコアの組み合わせ)。 foreach はネストできますが、ネスト内の foreach 名は一意であることを保証する必要があります。from 属性 (通常は配列) は、from 変数に値がない場合に実行されるループの数を決定します。デフォルト値の説明が必要です
from string Yes n/a ループする配列の名前
item string Yes n/a 現在処理されている要素の変数名
key string No n/a 現在処理されている要素のキー名element

name string いいえ n/a ループへのアクセスに使用されるループの名前

例 1:
{* この例では、配列 $custid*}
{foreach from 内のすべての要素の値が出力されます=$custid item=curr_id}

id: {$curr_id}

{/foreach}
出力結果:
id: 1000

id: 1001

id: 1002

例2:
$smarty->assign("連絡先", array(array("電話" => "1", "FAX" => "2", "携帯電話" => "3"),
array("phone" => "555-4444", "fax" => "555-3333 ", "cell" => "760-1234")));
*}
{* キーは配列の添字については、配列の説明を参照してください*}
{foreach name=outer item=contact from=$contacts}
{foreach key=key item=item from=$contact}
{$key}: {$item}

{/foreach}
{/foreach}
出力結果:
phone: 1FAX: 2

携帯: 3

phone: 555-4444< br>
fax: 555-3333

cell: 760-1234


foreach ループには独自の変数名があり、この変数名を使用してループにアクセスします。使用方法は {$smarty.foreach.foreachname です。 .varname}、foreachname は foreach で指定された name 属性です。
include
Include タグは、現在のテンプレートに含まれる変数を使用できます。 file 属性を指定する必要があります。これは、テンプレート リソースの場所を示します。 assign 属性が設定されている場合、この属性に対応する変数名は、含めるテンプレートの出力を保存するために使用されるため、テンプレートを含む出力は直接表示されません。

属性タイプは必須か? デフォルト値の説明

ファイル文字列 はい 該当なし 含まれるテンプレート ファイルの名前
割り当て文字列 いいえ 該当なし この属性は、含まれるテンプレートの出力を保存する変数を指定します
[var ...] [var type ] いいえ n/a インクルードされるテンプレートに渡されるローカル パラメーターは、インクルードされるテンプレート内でのみ有効です

例 1 include 関数のデモ
{include file="header.tpl"}
{* テンプレートの本文はここにあります *}
{include file="footer.tpl"}

例 2 渡されたパラメーターを使用した include 関数のデモ
{include file="header.tpl" title="Main Menu" table_bgcolor=" #c0c0c0"}
{* ここにテンプレートの本文が入ります *}
{include file="footer.tpl" logo="http://www.php118.com/php118.gif"}

例 3 include 関数のデモ外部テンプレート リソースを使用する
{* 絶対ファイルパス * }
{include file="/usr/local/include/templates/header.tpl"}
{* 絶対ファイルパス (同じもの) *}

{include file="file: /usr/local/include/templates/header .tpl"}

{* Windows の絶対ファイルパス (「file:」プレフィックスを使用する必要があります) *}
{include file="file:C:/www/pub/templates/header. tpl"}
{* 「db」という名前のテンプレート リソースからインクルード *}
{include file="db:header.tpl"}

include_php
inluce_php 関数は、php スクリプトをテンプレートに含めるために使用されます。セーフ モードが設定されている場合、include_php 関数は、含まれる php ファイルへのパスを指定する file 属性を設定する必要があります。 $trusted_dir の相対パスは絶対パスにすることもできます。
include_php は、PHP コードをテンプレート ファイルから分離する良い方法です。データベースからデータを動的に取得する サイトナビゲーションを表示するテンプレートの場合、データコンテンツのphpロジック部分を分離して別のフォルダーに保存し、テンプレートの先頭にphpスクリプトを含めることができます。このテンプレートは、データベース情報が以前にプログラムによって取得されたかどうかを心配する必要はありません。
PHP ファイルがテンプレート内で複数回呼び出された場合でも、ファイルがデフォルトで 1 回だけ含まれることを示すために、once 属性を設定できます。一度の場合、属性が false に設定されている場合、ファイルは呼び出されるたびに再インクルードされます。
assign 属性が設定されている場合、この属性に対応する変数名が使用されます。インクルードする PHP ファイルの出力が直接表示されないように、インクルードする PHP ファイルの出力を保存します。
smarty オブジェクトは、含める php ファイル内の $this を通じてアクセスできます。
属性タイプにデフォルト値の説明が必要かどうか
ファイル文字列 はい n/a 含める php ファイルの名前
once boolean いいえ trueインクルードする php ファイルがインクルードされているかどうか まだインクルードするかどうか (php の include_once 関数と同様)
assign string No n/a この属性は、インクルードする php ファイルの出力を保存する変数を指定します


// mysql データベースから変数をロードし、テンプレートに割り当てます
// mysql データベースからデータを取得し、そのデータをテンプレート変数に割り当てます require_once("MySQL.class.php");
$ sql = new MySQL;
$sql->query("select * from site_nav_sections order by name",SQL_ALL);
$this->assign('sections',$sql->record);
?>>

index.tpl
---------
{ * 絶対パス、または $trusted_dir への相対パス *}
{* 絶対パス、または $trusted_dir への相対パス*}
{include_php file="/path/ to/load_nav.php"}
{foreach item="curr_section" from= $sections}
{/foreach}

上記はPHP テンプレート エンジン Smarty の組み込み関数のコンテンツ。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。