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