Я не могу добавить хэш к хранилищу в Catalyst - PullRequest
1 голос
/ 25 октября 2011

У меня есть хэш с некоторыми парами ключ / значение

my %hash = ('key1','value1', 'key2', 'value2');

Я передаю его в Stash, чтобы использовать его в HTML-шаблоне:

$c->stash( theHash => %hash);

А затем вШаблон, для отображения значений, я думаю, я должен использовать что-то вроде

[% theHash.key1 %] #It should display "value1"
[% theHash.key2 %] #It should display "value2"

Но это не работает.

Это работает, если я передаю значения одно за другим:

$c->stash( valueOfHash1 => $hash{'key1'});
$c->stash( valueOfHash2 => $hash{'key2'});

И получить его как

[% valueOfHash1 %] #It displays "value1"
[% valueOfHash2 %] #It displays "value2"

Но хеш будет иметь много значений.Это кажется хорошей идеей.

Чего мне не хватает?Заранее спасибо.

Ответы [ 2 ]

11 голосов
/ 25 октября 2011

Если вы перетащите хеш в контекст списка, он будет развернут в список.

Вы хотите сохранить ссылку на хеш.

$c->stash( theHash => \%hash);
0 голосов
/ 02 февраля 2013

Или вы можете использовать этот подход:

$c->stash->{theHash} = { %hash }; # It creates an anonym hash reference 
                                  # which keeps the %hash data
...
print $c->stash->{theHash}->{key1}; # value1
...