smarty修饰符返回的引用数组值

时间:2014-05-12 22:09:55

标签: smarty smarty2

有人可以告诉我如何引用smarty修饰符返回的数组中的值

我有一个返回数组的修饰符

$user = array("name"  => $name, "id" => $id, "email" => $email);
return $user;

当我尝试使用下面的代码访问模板中的返回值时,它只是说Array

{$member|user_display:"name"}

我已经尝试了很多不同的方法,如果我使用{$member|user_display:"name"|@print_r}它会显示数组结构和值,所以信息只需要得到它

1 个答案:

答案 0 :(得分:0)

一切都取决于您需要的功能。

如果您想简单地显示密钥值,您的代码应如下所示:

Smarty修饰符:

function smarty_modifier_user_display($member, $field="name")
{                                                
  // sql searching user  
  $user = array("name"  => 'XXX', "id" => $member.'222', "email" => 'my@example.com');
  return $user[$field];
}

Smarty模板文件:

{assign var=member value="3"}
{$member|user_display}
{$member|user_display:"name"}
{$member|user_display:"id"}
{$member|user_display:"email"}

但是当你展示了修饰符时:

function smarty_modifier_user_display($member)
{                                                
  // sql searching user  
  $user = array("name"  => 'XXX', "id" => $member.'222', "email" => 'my@example.com');
  return $user;
}

Smarty模板文件应如下所示:

{assign var=member value="3"}

{assign var=my_user value = $member|user_display}

{$my_user.name}
{$my_user.id}
{$my_user.email}

使用修饰符时当然要小心 - 我不知道从哪个来源获取用户的数据。但是如果你从数据库中进行,你不应该每次都查询数据库,因为当你多次启动修饰符时,你的数据库将被多次查询而不是一次。