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

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-06-23 13:55:481376ブラウズ

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

function demo($params){        extract($params);        echo $a.$b;    }    $tpl->registerPlugin('block','demo','demo');



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


解いてください!




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

この「627ef82d61549116f821f2943484966b」を削除しますか?

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

プラグインを作成したことがありません。この例は役に立ちますか?
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 までご連絡ください。