【问题标题】:Smarty print comment gives wrong values in multi dimensional arraySmarty 打印注释在多维数组中给出错误值
【发布时间】:2012-02-12 21:53:28
【问题描述】:

我们有一家社交网络初创公司,我们需要集成 smarty 模板。我有一个 php 数组,即 $profile_tasks$profile_tasks 中的元素具有以下属性;

    [0] => Array
    (
        [name] => hello
        [location] => 
        [date] => 
        [time3] => 0
        [time1] => 
        [state] => 0
        [like_count] => 0
        [comment_count] => 2
        [does_id] => 91
        [comments] => Array
            (
                [sender_id] => 27
                [content] => khhkhjkkhk
                [time] => 2012-02-09 20:06:13
                [user_name] => aacanakin
                [picture_url] => http://graph.facebook.com/fb_user_name/picture
            )

    )

在我的 smarty 模板文件中,我已经像这样分配了 $profile_tasks 数组;

$smarty->assign("profile_tasks", $profile_tasks);

在我的 .tpl 文件中,打印 [name][location] 字段等任何属性都没有问题。我有以下用于名称打印的代码;

  {foreach name=outer item=profile_task from=$profile_tasks}  

    {$profile_task.name}
    {$profile_task.locatin} // these two works correctly

    {foreach name=inner item=comment from=$profile_task.comments}

      {comment.user_name} // these three statements doesn't return correct values
      {comment.picture_url}
      {comment.content}

    {/foreach}  

   {/foreach} 

所以,正如我之前所说,comments 数组中的值不正确。我应该在内循环中改变什么?任何帮助将不胜感激。

【问题讨论】:

    标签: php smarty


    【解决方案1】:

    随便用

      {comments.user_name} // these three statements doesn't return correct values
      {comments.picture_url}
      {comments.content}
    

    你不需要

      {foreach name=inner item=comment from=$profile_task.comments}
    

    如果您的 cmets 数组有多个子数组,那么您会这样做。

    更新: 根据评论更新。您的数组需要看起来像这样才能使您的原始代码正常工作

        [comments] => Array(
        [0] =>  Array
            (
                [sender_id] => 27
                [content] => khhkhjkkhk
                [time] => 2012-02-09 20:06:13
                [user_name] => aacanakin
                [picture_url] => http://graph.facebook.com/fb_user_name/picture
            )
       )
    

    PS。在一个小注上,我很早就意识到使用默认的{} 来表示 smarty 标签真的很烦人,因为你不能在 html 模板页面上愉快地与 javascript 共存。如果你没有走太远我会使用的路线

    $left_delimiter -> '{[';
    $right_delimiter -> ']}';
    

    指定替代方案。这意味着您不必担心在任何地方使用 {literal} 标签。

    【讨论】:

    • cmets 有多个值。这就是为什么我需要内部 foreach
    • cmets 在您的数组中没有多个值。更正你的数组,你的代码就可以工作了。
    • profile_tasks 数组可以有多个 cmets。这个例子只是不包含多个 cmets。我会编辑帖子。
    • @arascanakin,很难回答不是你问的问题! :)
    • 好的。我刚刚意识到评论数组无法正常工作。让我解决另一个问题。谢谢你的回答:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-11
    • 2011-03-11
    • 2012-01-14
    • 1970-01-01
    • 1970-01-01
    • 2014-04-13
    • 1970-01-01
    相关资源
    最近更新 更多