【问题标题】:reference array values returned by smarty modifiersmarty 修饰符返回的引用数组值
【发布时间】:2014-05-12 22:09:54
【问题描述】:

谁能告诉我如何从 smarty 修饰符返回的数组中引用值

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

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

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

{$member|user_display:"name"}

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

【问题讨论】:

    标签: smarty smarty2


    【解决方案1】:

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

    如果您只想显示键的值,您的代码应如下所示:

    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}
    

    在使用修饰符时你当然应该小心——我不知道你从什么来源为你的用户获取数据。但是如果你从数据库中做,你不应该每次都查询数据库,因为当你启动修改器几次时,你的数据库将被不必要地查询多次而不是一次。

    【讨论】:

    • 非常感谢。我把它改成了你的第一个例子,它更有效地满足了我的需要,还帮助解决了另外几个问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多