ホームページ  >  記事  >  バックエンド開発  >  Smarty_PHP チュートリアルでデータを自動的にロードする foreach のような関数を追加する方法

Smarty_PHP チュートリアルでデータを自動的にロードする foreach のような関数を追加する方法

WBOY
WBOYオリジナル
2016-07-21 15:02:43791ブラウズ

Smarty にデータを読み込むためにカスタム プラグインを使用しています (参照: テンプレートにデータを直接読み込むための Smarty プラグインの作成の詳細) を使用するときに、アイデアがあり、次のようなタグを書きたいと思いました。 foreach:

ステップ 1: Smarty_Compiler.class.php の _compile_tag 関数を追加します:

コードをコピーします コードは次のとおりです:

//データ読み込みの開始タグ
case 'load ':
$this-> ;_push_tag('load');
return $this->_complie_load_start($tag_args);
Break;
//データロードの終了タグ
case '/load':
$this- >_pop_tag('load' ; 以下のように:


/**
* データをロードします
* @param $tag_args*/
function _complie_load_start($tag_args)
{
$key = substr(md5($tag_args), 8, 16); //パラメータに基づいて特別な変数名を生成します $attrs = $this->_parse_attrs($tag_args); //ここにさらに処理を追加できます $class = (!isset($attrs['class']) | | empty($attrs['class' ])) 'cls_crud' : トリム($attrs['class']); (!isset($attrs['table']) || empty($attrs['table '])) && exit('' table` は空です!');
$db = $class::factory(array('table' => substr($attrs['table'], 1, -1) ));
//新しい変数を定義します
$this->tpl_vars[$key] = $db->get_block_list(array(substr($attrs['where'], 1, -1)), $attrs[ 'limit']);
$tag_args = "from=/${$key} " . $tag_args;

// foreach タグの処理関数を呼び出して処理します
return $this->_compile_foreach_start($tag_args);
}


このようにテンプレートで使用できます。loadタグを使用します。使用例:



コードをコピー

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


{load table="test" where="`id`<100" limit=10 item=rec}
...
{ /load}


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

tru​​e

http://www.bkjia.com/PHPjc/327901.html
技術記事
カスタム プラグインを使用して Smarty にデータをロードします (参照: Smarty プラグインを作成してテンプレートにデータを直接ロードする方法) を使用すると、まだ十分に便利ではないと感じます...

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