Smarty打印注释在多维数组中给出错误的值

时间:2012-02-12 12:55:41

标签: php 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数组中的值不正确。我应该在内循环中改变什么?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分: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}

如果你的注释数组有多个子数组,那么就可以。

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

    [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。在一个子注释中,我很早就意识到使用默认的{}来表示智能标签真的很烦人,因为你不能在html模板页面上与javascript共存。如果你没有走太远的路线,我会用

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

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