ホームページ > バックエンド開発 > PHPチュートリアル > Smarty 3.1.8 の登録関数 registerPlugin の使用に関する問題

Smarty 3.1.8 の登録関数 registerPlugin の使用に関する問題

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-06-23 13:55:48
オリジナル
1377 人が閲覧しました

Smarty を学習中にこのような問題に遭遇しました。

function demo($params){        extract($params);        echo $a.$b;    }    $tpl->registerPlugin('block','demo','demo');
ログイン後にコピー



次に、テンプレート ファイルに次のように書きました。 text 1text


解いてください!




ディスカッションに返信 (解決策)

この「<{/demo}>」を削除しますか?

削除するとエラーが発生します

プラグインを作成したことがありません。この例は役に立ちますか?
http://www.xuandun.net/173/

これを見ました

これに従って書きました

はは、試してみます

Smarty 3.1.7 の例は問題ありません

<body>        <{demo a=1 b=text}>        <{/demo}>    </body>
ログイン後にコピー

$smarty = new Smarty;$smarty->registerPlugin("function","demo", "demotest");;//制定类型,这里制定是函数调用,指定模板函数名称和php函数名称function demotest($params) {	extract($params);//获取参数a与b了	echo $a.$b;//输出}
ログイン後にコピー

{demo a="2" b="test"}
ログイン後にコピー


確かに問題はありません

私が言ったことは

$smarty->registerPlugin("function","demo", "demotest")
ログイン後にコピー
です

もう一度試してください

問題はまだ解決していません

マニュアルの例を見てください

$smarty->registerPlugin("block","demo", "demotest")
ログイン後にコピー
// function declarationfunction do_translation ($params, $content, $smarty, &$repeat, $template){  if (isset($content)) {    $lang = $params["lang"];    // do some translation with $content    return $translation;  }}// register with smarty$smarty->registerPlugin("block","translate", "do_translation");
ログイン後にコピー



問題はまだ解決していません

それは、ブロック プラグインが 2 回呼び出されると推定されます

例を確認しましたが、まだエラーが発生しました

例を確認しましたが、それでもエラーが発生しました

ブロック メソッドは 2 回実行されます。 if (isset($content)) { により、1 回だけ実行されるように判断されます。
http://www.itlearner.com/code/smarty_cn/plugins.block.functions.html

11 階からの to_phper の返信からの引用:

例を見ましたが、例にはまだエラーがあります


blockメソッドは2回実行されます。 if (isset($content)) { により、1 回だけ実行されるように判断されます。
http://www.itlearner.com/code/smarty_cn/plugins.block.functions.html

3q 問題は解決しました! !


ブロックが 2 回表示されますが、これは Smarty のバグと考えられます。しかし、使用には影響ありません。

{translate lang="br"}Hello, world!{/translate}
ログイン後にコピー


function test2($arr,$content){	print_r($arr);	//$html = "<div style='font-size:".$arr["size"]."px;color:".$arr["color"]."'>".$content."</div>";	//return $html;}$smarty->registerPlugin("block","test2","test2");
ログイン後にコピー


出力: Array ( [size] => 30 [color] => #ff0000 ) Array ( [size] => 30 [color] => #ff0000 )

関連ラベル:
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート