Rumah > pembangunan bahagian belakang > tutorial php > Smarty 3.1.8 中的注册函数 registerPlugin使用问题

Smarty 3.1.8 中的注册函数 registerPlugin使用问题

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2016-06-23 13:55:48
asal
1381 orang telah melayarinya

在学习smarty中遇到了这样一个问题
     在php文件中我这样写  

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



然后在模板 文件中这样写:

<body>        <{demo a=1 b=text}>        <{/demo}>    </body>
Salin selepas log masuk





输出的时候怎么输出了两个 1text 1text


求解决!


回复讨论(解决方案)

去掉这个“ <{/demo}>”?

去掉的话 就会发生错误

木写过插件,这这例子有帮助没?
http://www.xuandun.net/173/

这个我看了
我就是按照这个来写的


呵呵,我试试

smarty 3.1.7例子没有问题

$smarty = new Smarty;$smarty->registerPlugin("function","demo", "demotest");;//制定类型,这里制定是函数调用,指定模板函数名称和php函数名称function demotest($params) {	extract($params);//获取参数a与b了	echo $a.$b;//输出}
Salin selepas log masuk

{demo a="2" b="test"}
Salin selepas log masuk

$smarty->registerPlugin("function","demo", "demotest")
Salin selepas log masuk


的确没有问题

我说的是
$smarty->registerPlugin("block","demo", "demotest")
Salin selepas log masuk


再试试

问题还是没有解决

你看看手册中的示例

// 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");
Salin selepas log masuk
{translate lang="br"}Hello, world!{/translate}
Salin selepas log masuk

问题还是没有解决


估计block的插件会调用两次

例子我看了 例子还是出现了错误

例子我看了 例子还是出现了错误


block方式的会执行两次。通过 if (isset($content)) {,做了判断所以只执行了一次。
http://www.itlearner.com/code/smarty_cn/plugins.block.functions.html

引用 11 楼 to_phper 的回复:

例子我看了 例子还是出现了错误

block方式的会执行两次。通过 if (isset($content)) {,做了判断所以只执行了一次。
http://www.itlearner.com/code/smarty_cn/plugins.block.functions.html


3q 问题解决了!!

block会出现两次,算是smarty的一个bug吧。但不影响使用。

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");
Salin selepas log masuk


<{test2 size="30" color="#ff0000"}>Hello World<{/test2}>
Salin selepas log masuk


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

Label berkaitan:
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Isu terkini
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan