目次
Smarty の 30 分のクイック スタート チュートリアル、すぐに Smarty を始めましょう
PHP テンプレート エンジン Smarty の使用を開始する方法を学びましょう エラー: C:\AppServ\www\mb\smarty\Smartyclassphp 行 780
ホームページ バックエンド開発 PHPチュートリアル 30 分でわかる Smarty クイック スタート チュートリアル、Smarty クイック スタート_PHP チュートリアル

30 分でわかる Smarty クイック スタート チュートリアル、Smarty クイック スタート_PHP チュートリアル

Jul 13, 2016 am 10:15 AM
smarty はじめる チュートリアル テンプレートエンジン

Smarty の 30 分のクイック スタート チュートリアル、すぐに Smarty を始めましょう

この記事では、smarty をすぐに使い始める方法について説明しており、読者は 30 分以内に Smarty の使い方をすぐにマスターできます。参考のためにみんなで共有してください。具体的な実装方法は以下の通りです

1. Smarty のプログラミング部分:

smarty のテンプレート設計セクションでは、smarty のテンプレートでの一般的な設定をいくつか紹介しました。このセクションでは主に、smarty でプログラム設計を開始する方法を紹介します。 Smarty ファイルをダウンロードしてサイトに追加します。

index.phpのコードは次のとおりです:

コードをコピーします コードは次のとおりです:
<?php
/**
*
* @version $Id:index.php
* @パッケージ
* @著者 www.jb51.net
* @action サンプルプログラムを表示します
*/
include_once("./Smarty/Smarty.class.php") //smarty クラス ファイルをインクルードします

$smarty = new Smarty(); //smarty インスタンス オブジェクト $smarty を作成します
$smarty->templates("./templates") //テンプレートディレクトリを設定します
; $smarty->templates_c("./templates_c") //コンパイルディレクトリを設定します
$smarty->cache("./cache") //キャッシュディレクトリ
$smarty->cache_lifetime = 0 //キャッシュ時間
; $smarty->caching = true //キャッシュメソッド;

$smarty->left_delimiter = "{#"; $smarty->right_delimiter = "#}"; $smarty->assign("name", "zaocha") //テンプレート変数を置き換えます
$smarty->display("index.htm"); // ./templates にあるindex.htm テンプレートをコンパイルして表示します
?>

2. Smarty プログラムについて説明します

smarty のプログラム部分が実際には PHP 言語仕様に準拠したコードのセットであることがわかります。順番に説明しましょう。

1:/**/ステートメント:

含まれる部分はプログラムのヘッダーコメントです。主な内容は、プログラムの機能、著作権、作者、執筆時間などの簡単な紹介です。smarty ではこれは必要ありませんが、プログラムのスタイルからすると、これは良いスタイルです。

2: include_once ステートメント:

Web サイトにインストールされている Smarty ファイルが現在のファイルにインクルードされます。インクルードされるパスは正しく記述される必要があることに注意してください。

3:$smarty = 新しいSmarty():

この文は、オブジェクトの単純なインスタンス化である新しい Smarty オブジェクト $smarty を作成します。

4:$smarty->テンプレート(""):

この文は、tpl テンプレートを使用する場合の $smarty オブジェクトのパスを指定します。この文がない場合、Smarty のデフォルトのテンプレート パスは、実際にプログラムを作成するときにこれを指定する必要があります。文。これも優れたプログラミング スタイルです。

5:$smarty->templates_c(""):

この文は、$smarty オブジェクトがコンパイルされるディレクトリを指定します。テンプレート設計の章では、Smarty がコンパイルされたテンプレート言語であり、このディレクトリがテンプレートをコンパイルするディレクトリであることをすでに知っています。サイトが Linux サーバー上にある場合は、必ず確認してください

teamplates_c で定義されたディレクトリには、書き込み可能および読み取り可能なアクセス許可が設定されています。同じ理由で、そのコンパイル ディレクトリは現在のディレクトリにあります。

6: $smarty->left_delimiter および $smarty->right_delimiter:

テンプレート変数を検索するときの左右の区切り文字を示します。デフォルトでは「{」と「}」ですが、実際にはテンプレート内で <script> を使用する必要があるため、スクリプト内の関数定義では必然的に {} を使用することになりますが、独自の解決策はあります。習慣を再定義します

は、「{#」と「#}」、「<!--{」と「}-->」、またはその他の識別子です。ここで左と右の区切り文字が定義されている場合は、対応して、テンプレート ファイル内で次のようになります。各変数は定義と同じ記号を使用する必要があります。たとえば、ここでは「<{」と「}>」として指定され、HTML テンプレートでも使用されます。

それに応じて、プログラムがテンプレート変数を正しく見つけられるように、{$name} を <{$name}> に変更します。

7:$smarty->cache("./cache"):

出力テンプレート ファイルをキャッシュする場所を Smarty に指示します。前回の記事で、Smarty の最大の利点はキャッシュできることであることがわかりました。キャッシュを設定するディレクトリは次のとおりです。デフォルトでは、これは現在のディレクトリ内のキャッシュ ディレクトリであり、Linux システムの templates_c ディレクトリに相当します。

読み書き可能であることを確認したいと考えています。

8:$smarty->cache_lifetime = 60 * 60 * 24:

キャッシュの有効時間は秒単位で計算されます。最初のキャッシュ時間が経過したときに Smarty キャッシュ変数が true に設定されている場合、キャッシュは再構築されます。値が -1 の場合は、確立されたキャッシュが期限切れにならないことを意味し、0 の場合は、プログラムが実行されるたびにキャッシュがキャッシュされることを意味します

保存は常に再作成されます。上記の設定は、cache_lifetime を 1 日に設定することを意味します。

9:$smarty->キャッシング = 1:

この属性は、Smarty にキャッシュするかどうか、およびキャッシュする方法を指示します。 3 つの値を取ることができます。0: Smarty のデフォルト値で、テンプレートがキャッシュされないことを示します。1: Smarty が現在定義されているcache_lifetime を使用してキャッシュを終了するかどうかを決定することを示します。

Smarty は、キャッシュが作成されるときに、cache_lifetime 値を使用します。キャッシュするかどうかを示すには、true と false を使用するのが一般的です。

10:$smarty->assign("名前", "ザオチャ"):

この数値のプロトタイプは assign(string varname,mixed var) です。varname はテンプレートで使用されるテンプレート変数です。var は、テンプレート変数によって置き換えられる変数名を指します。その 2 番目のプロトタイプは assign(mixed var) です。次の例では、このメンバー関数の使用方法を詳しく説明します。assign は、Smarty のコア関数の 1 つであり、テンプレート変数のすべての置換に使用する必要があります。

11:$smarty->display("index.tpl"):

この関数のプロトタイプは display(string varname) で、テンプレートを表示するために使用されます。簡単に言うと、分析および処理されたテンプレートが表示されます。ここでテンプレート ファイルへのパスを追加する必要はありません。$smarty->templates(string path) でそのパスをすでに定義しているだけです。 )。

プログラムが実行された後、現在のディレクトリにある templates_c ディレクトリとキャッシュ ディレクトリを開くと、以下にいくつかの %% ディレクトリがあることがわかります。これらのディレクトリは Smarty のコンパイル ディレクトリとキャッシュ ディレクトリです。これらはプログラムによって自動的に生成されます。これらのディレクトリを直接編集しないでください。

Smarty プログラムでよく使用されるいくつかの基本要素を簡単に紹介しました。次の例では、それらが複数回使用されることがわかります。

3. テンプレートの説明

次に、section ループ ブロックと foreach ループ ブロックを紹介します。本来はテンプレート部分に属するものですが、smarty の本質であり、smarty プログラミング部分と非常に密接に関係しているため、個別に説明します。このセクション。

1: foreach: 単純な配列をループするために使用されます。その定義形式は次のとおりです。

コードをコピーします コードは次のとおりです:
{foreach from=$array item=array_id}
{foreachelse}
{/foreach}
このうち、fromはループ対象の配列変数、itemはループ対象の変数名、ループ回数はfromで指定した配列変数の数によって決まります。 {foreachelse} は、プログラムで渡された配列が空の場合の処理​​に使用されます。簡単な例を次に示します。
テンプレートファイル:

example.htm ページは次のとおりです:

コードをコピーします コードは次のとおりです:foreachは「2次元連想配列」のデータを出力します:
{#foreach item=new from=$news#}

ニュース番号: {#$new.id#}

ニュースコンテンツ: {#$new.title#}

{#foreachelse#}

データベースにニュース出力がありません!


{#/foreach#}

{foreach from=$newsArray item=newsID}

ニュース ID: {$newsID}

ニュース コンテンツ: {$newsTitle}
{foreachelse}
申し訳ありませんが、データベースにはニュース出力がありません!

{/foreach}

これはデータが表示されないというエラーであり、この記事では修正されています。


プログラムファイル:example.phpは以下の通りです:

コードをコピーします コードは次のとおりです:<?php
/*********************************************
*
* ファイル名:example.php
* 機能: プログラム例2を表示
*********************************************/
include_once("./Smarty/Smarty.class.php"); $smarty = 新しい Smarty(); $smarty->templates("./templates"); $smarty->templates_c("./templates_c"); $smarty->cache("./cache"); $smarty->cache_lifetime = 0; $smarty->キャッシュ = true
; $smarty->left_delimiter = "{#"; $smarty->right_delimiter = "#}"; $array[] = array("ニュースID"=>1, "ニュースタイトル"=>"ニュースNo.1"); $array[] = array("ニュースID"=>2, "ニュースタイトル"=>"ニュース第2弾"); $array[] = array("ニュースID"=>3, "ニュースタイトル"=>"ニュース第3号"); $array[] = array("ニュースID"=>4, "ニュースタイトル"=>"ニュース第4号"); $array[] = array("ニュースID"=>5, "ニュースタイトル"=>"ニュース第5号"); $array[] = array("ニュースID"=>6, "ニュースタイトル"=>"ニュース第6号"); //これは 2 次元の連想配列です
$smarty->assign("newsArray", $array); // ./templates の下にあるindex.htm テンプレートをコンパイルして表示します
$smarty->display("example.htm"); ?>

入力結果: example.php の出力は次のとおりです:




コードをコピーします

コードは次のとおりです:

ここに配列が出力されます:

ニュース番号: 1

ニュース内容:ニュースNo.1

ニュース番号: 2
ニュース内容:ニュースNo.2
ニュース番号: 3

ニュース内容:ニュースNo.3 ニュース番号: 4 ニュース内容:ニュースNo.4
ニュース番号: 5

ニュース内容:ニュースNo.5

ニュース番号: 6

ニュース内容:ニュースNo.6

foreach は foreachelse と一致させることもできます。foreach に渡される配列が null の場合にプログラムによって実行される操作を指定するには、foreachelse を使用します。具体的な使用方法については、マニュアルを参照してください。

2.セクション:

セクションは、foreach の欠点を解決するために作成されました。foreach と同様に、テンプレート内のループ ブロックを設計するために使用されます。そのため、私は foreach を使用する代わりに、これを使用することに慣れています。 foreach のプログラム、基本的なプロトタイプは次のとおりです。

コードをコピーします

コードは次のとおりです:

{セクション名 = name ループ = $varName[, start = $start, step = $step, max = $max, show = true]}

パラメータは次のように説明されます:

name: セクションの名前。$

を追加する必要はありません

$loop: ループする変数。プログラム内でこの変数を操作するには assign を使用します。

$start: ループを開始する添字。デフォルトではループの添字は 0 から始まります。

$step: 各ループ中の添え字の増分

$max: 最大ループ添字

$show: ブール型、このブロックを表示するかどうかを決定します、デフォルトは true です

ここで説明が必要な名詞があります:

巡回添字: 実際の英語名はインデックスで、ここでは主にわかりやすくするために「添字」と訳します。このループ ブロックを表示するときの現在のループ インデックスを表します。デフォルトでは 0 から始まり、$start が 5 に設定されている場合は、5 からカウントされます。これはテンプレート設計部分で使用されています。これは現在の {section} の属性であり、呼び出しメソッドは Smarty.section.sectionName.index です。ここでの sectionName は関数プロトタイプの name 属性を指します。

{section} ブロックの属性値は次のとおりです:

1. インデックス: 上で紹介した「ループ インデックス」、デフォルトは 0 です

2.index_prev: 現在のインデックスの前の値、デフォルトは -1 です

3.index_next: 現在のインデックスの次の値、デフォルトは 1 です

4. 最初: 最初のループですか

5. last: 最後のループかどうか

6. 反復: サイクル数

7. rownum: 現在の行番号、反復の別のエイリアス

8. ループ: セクションブロックの後のセクション内のループの数をカウントするために使用できる最後のループ番号

9. 合計: セクションブロック後のループの数をカウントするために使用できます

10. show: 関数の宣言に含まれており、セクションを表示するかどうかを決定するために使用されます

これらの属性は、テンプレート部分で使用したので、マニュアルを参照してください。

同様に、{section} を {sectionelse} と組み合わせて使用​​して、受信配列変数が空の場合のテンプレートの処理を示すこともできます。

現在の関数を実現するために、上記の例では {foreach} の代わりに {section} を使用しています。この例では、tpl プログラム ファイルに {foreach} を実装するためにのみ {section} を使用していることに注意してください。変更はなく、{sectionelse} 処理ブロックが追加されます:

example.tpl テンプレート ファイルは次のとおりです:

コードをコピーします コードは次のとおりです:
ここに配列が出力されます:
{セクション名=ループループ=$ニュース}

ニュース番号: {$News[loop].newsID}
ニュースのタイトル: {$News[loop].newsTitle}
{セクションその他}
申し訳ありませんが、ニュースはありません
{/セクション}

example.php ファイルは次のとおりです:

コードをコピーします コードは次のとおりです:
<?php
/*********************************************

*

* ファイル名: example7.php

* 機能: プログラム例2を表示

************************************************/

include_once("./comm/Smarty.class.php");

$smarty = 新しい Smarty();

$smarty->templates("./templates");

$smarty->templates_c("./templates_c");

$smarty->cache("./cache");

$smarty->cache_lifetime = 0;

$smarty->キャッシュ = true;

$smarty->left_delimiter = "{";

$smarty->right_delimiter = "}";

$array[] = array("ニュースID"=>1, "ニュースタイトル"=>"ニュースNo.1");

$array[] = array("ニュースID"=>2, "ニュースタイトル"=>"ニュース第2弾");

$array[] = array("ニュースID"=>3, "ニュースタイトル"=>"ニュース第3号");

$array[] = array("ニュースID"=>4, "ニュースタイトル"=>"ニュース第4号");

$array[] = array("ニュースID"=>5, "ニュースタイトル"=>"ニュース第5号");

$array[] = array("ニュースID"=>6, "ニュースタイトル"=>"ニュース第6号");

$smarty->assign("newsArray", $array);

// ./templates にあるindex.tpl テンプレートをコンパイルして表示します

$smarty->display("example.tpl");

?>

example.php 出力ファイルは次のとおりです:

コードをコピーします コードは次のとおりです:
ここに配列が出力されます:
ニュース番号: 1

ニュース内容:ニュースNo.1

ニュース番号: 2

ニュース内容:ニュースNo.2

ニュース番号: 3

ニュース内容:ニュースNo.3

ニュース番号: 4

ニュース内容:ニュースNo.4

ニュース番号: 5

ニュース内容:ニュースNo.5

ニュース番号: 6

ニュース内容:ニュースNo.6


ここでの {section} ブロックでの変数の名前の付け方は少しぎこちないように感じますが、問題ではありません。テンプレート変数の使用法を覚えておくだけで済みます。

$loopName[name].var で十分です。loopName はループで割り当てられる変数名、[name] は name で割り当てられる文字列、後者はプログラム配列に設定する値です。する。

この記事の Smarty プログラミングの学習ガイドはこれで終わりです。一般的なアプリケーションについては、この知識で十分です。さらに、Smarty の関連する実践的なアプリケーションも参照してください。これには、php の組み込み mysql ステートメント、phplib の DB クラス、ADODB、Pear の DB クラスなどが含まれます。興味のある友達は関連コンテンツに注目してください。

この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。

PHP テンプレート エンジン Smarty の使用を開始する方法を学びましょう エラー: C:\AppServ\www\mb\smarty\Smartyclassphp 行 780

まず、
$smarty->template_dir = './templates/';
$smarty->compile_dir = './templates_c/';
$smarty->cache_dir = './cache を使用して 3 つのディレクトリを設定します。 /'; そして、これら 3 つのディレクトリが存在し、パスが正しいことを確認してください。

次に、テンプレートの記述が間違っています
ニュース番号: {$newsID.newsID}<br>
ニュース コンテンツ: {$ newsID.newsTitle} <br><hr>

開発中は SMARTY CACHE を有効にせず、$smarty->caching = false; を設定することをお勧めします。

PHP テンプレート エンジン Smarty の使用を開始する方法を学習する際のエラー メッセージ: Smartyclassphp 行 1095

リソースindex.htmを「読み取る」ことができません
Smartyは3つの理由でテンプレートを読み取ることができません

1.index.htmには読み取り権限がありません。初心者の場合は、win
2でこの理由を削除する必要があります。テンプレート ファイルが存在しません、index.htm が存在しません、これはあなた自身が知っています、そのようなテンプレートを作成したはずです
3. テンプレートのパスが間違っています、これが核心です
$tpl = new Smarty; とすると、次のようになります。 echo $tpl-&gt ;template_dir; を印刷することをお勧めします
index.htm がこのディレクトリにあるかどうかを確認してください


http://www.bkjia.com/PHPjc/901287.html

tru​​ehttp://www.bkjia.com/PHPjc/901287.html技術記事 Smarty をすぐに使い始めるための 30 分のチュートリアル この記事では、smarty をすぐに使い始める方法について説明しており、読者は 30 分以内に Smarty の使い方をすぐにマスターできます。みんなとシェアしましょう...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

パデュー大学による、時間をかける価値のある拡散モデルのチュートリアル パデュー大学による、時間をかける価値のある拡散モデルのチュートリアル Apr 07, 2024 am 09:01 AM

パデュー大学による、時間をかける価値のある拡散モデルのチュートリアル

ワンクリックでPPTを生成!キミ: まずは「PPT出稼ぎ労働者」を普及させましょう ワンクリックでPPTを生成!キミ: まずは「PPT出稼ぎ労働者」を普及させましょう Aug 01, 2024 pm 03:28 PM

ワンクリックでPPTを生成!キミ: まずは「PPT出稼ぎ労働者」を普及させましょう

CVPR 2024 のすべての賞が発表されました!オフラインでのカンファレンスには1万人近くが参加し、Googleの中国人研究者が最優秀論文賞を受賞した CVPR 2024 のすべての賞が発表されました!オフラインでのカンファレンスには1万人近くが参加し、Googleの中国人研究者が最優秀論文賞を受賞した Jun 20, 2024 pm 05:43 PM

CVPR 2024 のすべての賞が発表されました!オフラインでのカンファレンスには1万人近くが参加し、Googleの中国人研究者が最優秀論文賞を受賞した

WeChat の支払い音をオフにする方法のチュートリアル WeChat の支払い音をオフにする方法のチュートリアル Mar 26, 2024 am 08:30 AM

WeChat の支払い音をオフにする方法のチュートリアル

技術初心者必読:C言語とPythonの難易度分析 技術初心者必読:C言語とPythonの難易度分析 Mar 22, 2024 am 10:21 AM

技術初心者必読:C言語とPythonの難易度分析

ベアメタルから 700 億のパラメータを備えた大規模モデルまで、チュートリアルとすぐに使えるスクリプトがここにあります ベアメタルから 700 億のパラメータを備えた大規模モデルまで、チュートリアルとすぐに使えるスクリプトがここにあります Jul 24, 2024 pm 08:13 PM

ベアメタルから 700 億のパラメータを備えた大規模モデルまで、チュートリアルとすぐに使えるスクリプトがここにあります

AIの活用 | AIが一人暮らしの女の子の生活ビデオブログを作成、3日間で数万件の「いいね!」を獲得 AIの活用 | AIが一人暮らしの女の子の生活ビデオブログを作成、3日間で数万件の「いいね!」を獲得 Aug 07, 2024 pm 10:53 PM

AIの活用 | AIが一人暮らしの女の子の生活ビデオブログを作成、3日間で数万件の「いいね!」を獲得

専門家が教える! Huawei携帯電話で長い画像をカットする正しい方法 専門家が教える! Huawei携帯電話で長い画像をカットする正しい方法 Mar 22, 2024 pm 12:21 PM

専門家が教える! Huawei携帯電話で長い画像をカットする正しい方法

See all articles