Ссылка на индекс в массиве в шаблоне SMARTY - PullRequest
0 голосов
/ 30 июня 2011

У меня есть переменная, которая является массивом в Smarty, и я пытаюсь выяснить, как получить эту информацию. Переменная называется $ COMMENTS, и я сделал $COMMENTS|@print_r, и вот что я получил:

Array ( 
    [0] => ModComments_CommentsModel Object ( 
        [data:private] => Array ( 
            [0] => 11686 
            [crmid] => 11686 
            [1] => 1679 
            [smcreatorid] => 1679 
            [2] => 1679 
            [smownerid] => 1679 
            [3] => 0 
            [modifiedby] => 0 
            [4] => ModComments 
            [setype] => ModComments 
            [5] => 
            [description] => 
            [6] => 2011-06-08 15:00:31 
            [createdtime] => 2011-06-08 15:00:31 
            [7] => 2011-06-08 15:00:31 
            [modifiedtime] => 2011-06-08 15:00:31 
            [8] => 2011-06-29 12:00:23 
            [viewedtime] => 2011-06-29 12:00:23 
            [9] => 
            [status] => 
            [10] => 0 
            [version] => 0 
            [11] => 1 
            [presence] => 1 
            [12] => 0 
            [deleted] => 0 
            [13] => 11686 
            [modcommentsid] => 11686 
            [14] => aasd 
            [commentcontent] => aasd 
            [15] => 6730 
            [related_to] => 6730 
            [16] => 
            [parent_comments] => 
            [17] => 11686 
        )
    )
    [1] => ModComments_CommentsModel Object ( 
        [data:private] => Array ( 
            [0] => 11685 
            [crmid] => 11685 
            [1] => 1679 
            [smcreatorid] => 1679 
            [2] => 1679 
            [smownerid] => 1679 
            [3] => 0 
            [modifiedby] => 0 
            [4] => ModComments 
            [setype] => ModComments 
            [5] => 
            [description] => 
            [6] => 2011-06-08 14:58:42 
            [createdtime] => 2011-06-08 14:58:42 
            [7] => 2011-06-08 14:58:42 
            [modifiedtime] => 2011-06-08 14:58:42 
            [8] => 
            [viewedtime] => 
            [9] => 
            [status] => 
            [10] => 0 
            [version] => 0 
            [11] => 1 
            [presence] => 1 
            [12] => 0 
            [deleted] => 0 
            [13] => 11685 
            [modcommentsid] => 11685 
            [14] => comment 
            [commentcontent] => comment 
            [15] => 6730 
            [related_to] => 6730 
            [16] => 
            [parent_comments] => 
            [17] => 11685
        )
    )
    [2] => ModComments_CommentsModel Object ( 
        [data:private] => Array ( 
            [0] => 6731 
            [crmid] => 6731 
            [1] => 1679 
            [smcreatorid] => 1679 
            [2] => 1679 
            [smownerid] => 1679 
            [3] => 0 
            [modifiedby] => 0 
            [4] => ModComments 
            [setype] => ModComments 
            [5] => 
            [description] => 
            [6] => 2010-11-02 10:15:06 
            [createdtime] => 2010-11-02 10:15:06 
            [7] => 2010-11-02 10:15:06 
            [modifiedtime] => 2010-11-02 10:15:06 
            [8] => 
            [viewedtime] => 
            [9] => 
            [status] => 
            [10] => 0 
            [version] => 0 
            [11] => 1 
            [presence] => 1 
            [12] => 0 
            [deleted] => 0 
            [13] => 6731 
            [modcommentsid] => 6731 
            [14] => Test comment 
            [commentcontent] => Test comment 
            [15] => 6730 
            [related_to] => 6730 
            [16] => 
            [parent_comments] => 
            [17] => 6731
        ) 
    )
)

Я пытаюсь извлечь из этого числа 11686 . Любая помощь? Я пробовал $COMMENTS[0][data:private][0], но это не сработало.

Любая помощь с благодарностью:)

1 Ответ

0 голосов
/ 30 июня 2011

Сначала поместите вывод print_r() в теги <pre>, чтобы он был читабельным.

Array ( 
    [0] => ModComments_CommentsModel Object ( 
        [data:private] => Array ( 
            [0] => 11686 
            [crmid] => 11686 
            [1] => 1679 
            [smcreatorid] => 1679 
            [2] => 1679 
            ...
        )
    )
    ...
)

Вы пытаетесь получить доступ к первому объекту в вашем массиве, $COMMENTS[0]. Поскольку это объект, а ваше свойство data является частным, вы не можете получить к нему доступ в Smarty. Вам нужно будет отредактировать класс ModComments_CommentsModel, чтобы предоставить вам доступ либо к свойству data, либо к ключу crmid этого свойства.

Пример:

class ModComments_CommentsModel {

    // ...

    public function CrmId(){
        return $this->data['crmid'];
    }

    // ...

}

{* template *}
{$COMMENTS[0]->CrmId()}

{* might have to assign before using method call *}
{assign var='comment' value=$COMMENTS[0]}
{$comment->CrmId()}
...