#perl #catalyst
#perl #катализатор
Вопрос:
У меня есть хэш с некоторыми парами ключ / значение
my %hash = ('key1','value1', 'key2', 'value2');
Я передаю его в тайник, чтобы использовать его в шаблоне 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"
Но хэш будет иметь много значений. Это действительно кажется хорошей идеей.
Чего мне не хватает? Заранее благодарю.
Ответ №1:
Если вы поместите хэш в контекст списка, он будет развернут в список.
Вы хотите сохранить ссылку на хэш.
$c->stash( theHash => %hash);
Ответ №2:
Или вы можете использовать этот подход:
$c->stash->{theHash} = { %hash }; # It creates an anonym hash reference
# which keeps the %hash data
...
print $c->stash->{theHash}->{key1}; # value1