ホームページ >バックエンド開発 >PHPチュートリアル >Smarty 3.1.8 の登録関数 registerPlugin の使用に関する問題
Smarty を学習中にこのような問題に遭遇しました。
function demo($params){ extract($params); echo $a.$b; } $tpl->registerPlugin('block','demo','demo');
削除するとエラーが発生します
プラグインを作成したことがありません。この例は役に立ちますか?これに従って書きました
はは、試してみます
<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 回実行されます。 if (isset($content)) { により、1 回だけ実行されるように判断されます。
11 階からの to_phper の返信からの引用:
例を見ましたが、例にはまだエラーがあります
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");