自定义函数的数组如何在模板同一个一个地取出显示?

#1 gnuser

1、我在Extensions文件夹中做了一个自定义函数的文件:spUserInfo.php
 
function user($Uid){
    $table=spClass("user");
    $result=$table->find("Uid=$Uid");
    return $result;
}

function tpl_user($params){
    return user($params['Uid']);
}
spAddViewFunction('theUser','tpl_user');

2、spModel、入口文件等都设置好,没有问题
3、在用户数据表user中有Uid  Uname Uregtime Ulogintime Uemail Uqq等字段。
4、现在在要在对应的user.html中输出该用户的各项信息,用
 
<{theUser Uid=$Uid}>

无法获得信息。请问应该用什么方法来获取?
谢谢

2011-06-13 20:35:01

#2 jake

“无法获得信息”具体是什么提示呢?

这样检查,首先是看模板函数有没有载入和能使用了。tpl_user函数里面直接返回个值(不查数据库),看看tpl_user是否正常工作了,如果没有,那么就检查spAddViewFunction是否已经执行,也就是在入口文件或者别的地方有没有载入spUserInfo.php文件了,没有则要用import把它载入。

然后是检查user函数,也是直接返回些字符串试试看。或者可以dump($table);看看有什么。

2011-06-13 21:21:11

#3 gnuser

不用return,改用dump($result)能正常输出
结果如:
Array
(
   [Uid] => 3
  [Uname] => gnuser
   [Uregtime] => 2011-06-12 23:55:36
)

表示信息还是能够获取的。就是在user.html中用<{theUser Uid=$Uid}>输出return $result的方式不对以至于是空白。
现在把要在user.html中输出的代码放到自定义函数中,替换了return $result:
function user($Uid){

    $table=spClass("user");

    $result=$table->find("Uid=$Uid");

    echo "
用户名:".$result['Uname']."
";
    echo "
注册时间:".$result['Uregtime']."
";
}
改成这样后在user.html中用<{theUser Uid=$Uid}>输出就能正常了。结果如:

2011-06-13 22:36:37

#4 gnuser

不用return,改用dump($result)能正常输出
结果如:
Array
(
   [Uid] => 3
  [Uname] => gnuser
   [Uregtime] => 2011-06-12 23:55:36
)

表示信息还是能够获取的。就是在user.html中用<{theUser Uid=$Uid}>输出return $result的方式不对以至于是空白。
现在把要在user.html中输出的代码放到自定义函数中,替换了return $result:
function user($Uid){

    $table=spClass("user");

    $result=$table->find("Uid=$Uid");

    echo "
用户名:".$result['Uname']."
";
    echo "
注册时间:".$result['Uregtime']."
";
}
改成这样后在user.html中用<{theUser Uid=$Uid}>输出就能正常了。结果如:
用户名:XXXX
注册时间:2011-12-12

按目前的测试结果表明,<{theUser Uid=$Uid}>输出的应该是字符(串)而无法输出数组。

请教有没有办法输出数组,并且能够把数组中各键的值分别一一输出?

2011-06-13 22:57:42

#5 jake

。。。模板函数是只能输出字符串,数组是一种语言结构。

“有没有办法输出数组,并且能够把数组中各键的值分别一一输出?”,你先在函数里面把“数组中各键的值分别一一输出”到一个字符串中,然后再return这个字符串就可以了。

2011-06-14 08:56:46

#6 gnuser

谢谢老大指点。我想输出到一个字符串与上面的方式差不多。这个问题总算有点明白了。

2011-06-14 13:30:16