Комментарий Smarty print дает неправильные значения в многомерном массиве

У нас есть стартап социальной сети, и нам нужно интегрировать умные шаблоны. У меня есть массив 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 неверны. Что мне изменить во внутреннем цикле? Любая помощь будет оценена по достоинству.


person aacanakin    schedule 12.02.2012    source источник


Ответы (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. В подпункте я очень рано понял, что использование по умолчанию {} для обозначения умных тегов действительно раздражает, поскольку вы не можете счастливо сосуществовать с javascript на странице шаблона html. Если бы вы не зашли слишком далеко по маршруту, я бы использовал

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

указать альтернативу. Это означает, что вам не нужно беспокоиться об использовании тегов {literal} где угодно.

person Toby Allen    schedule 12.02.2012
comment
комментарии имеют несколько значений. вот почему мне нужен внутренний foreach - person aacanakin; 12.02.2012
comment
комментарии не имеют нескольких значений в вашем массиве. Исправьте свой массив, и ваш код будет работать. - person Toby Allen; 12.02.2012
comment
Массив profile_tasks может иметь несколько комментариев. этот пример просто не содержит нескольких комментариев. Отредактирую пост. - person aacanakin; 12.02.2012
comment
@arascanakin, очень сложно ответить на вопрос, который не тот, который вы задали! :) - person Toby Allen; 12.02.2012
comment
Ok. Я только что понял, что массив комментариев работает некорректно. позвольте мне исправить другую проблему. Спасибо за ответы :-) - person aacanakin; 12.02.2012