лучший способ создать список данных с помощью mojolicious

Как лучше всего создать html5 список данных с помощью mojolicious?

Я искал помощник тега, но не нашел помощника тега для его создания.

Вот пример списка данных:

<datalist id="frameworks">
    <option value="MooTools">
    <option value="Moobile">
    <option value="Dojo Toolkit">
    <option value="jQuery">
    <option value="YUI">
</datalist>

Список является динамическим и извлекается из базы данных, поэтому я не могу использовать статический фрагмент html.

Существуют аналогичные помощники тегов, например. для тега <select> я могу поместить в свой шаблон:

%= select_field country => [[Germany => 'de'], 'en']

который производит:

<select name="country">
  <option value="de">Germany</option>
  <option value="en">en</option>
</select>

но я не смог найти ничего о списке данных в помощниках тегов по умолчанию.


person David Michael Gang    schedule 12.11.2013    source источник


Ответы (2)


Прошло некоторое время, но, возможно, найдет это полезным.

В контроллере нужно иметь массив с некоторыми элементами. Давайте создадим его:

my @levelsArray = ();
for (my $i=0;$i<10;$i++){
    push @levelsArray, "level00".$i;
}

После этого отправьте его в шаблон:

get '/index' => sub {
    my ( $mojo ) = @_;
    $mojo -> stash ('levelsArray' => \@levelsArray);
    $mojo -> render (template => 'index' );
};

и, наконец, визуализируйте его, используя:

<%= select_field 'levelSelected' => [ @{ stash('levelsArray') }] %>
person Luis Diaz    schedule 23.08.2017

Я не уверен, насколько это специфично для mojolicious, но простого html в вашем шаблоне будет недостаточно:

<datalist id="frameworks">
    <option value="MooTools">
    <option value="Moobile">
    <option value="Dojo Toolkit">
    <option value="jQuery">
    <option value="YUI">
</datalist>
<input type="text" list="frameworks" />

ИЗМЕНИТЬ

Позвольте мне уточнить, это не будет статическим HTML в вашем шаблоне... вы должны получить свои данные в контроллере и передать эти данные в шаблон, который создаст этот тип HTML с помощью своего механизма шаблонов.

person Slaven Tomac    schedule 12.11.2013
comment
Привет, список является динамическим и извлекается из базы данных. Поэтому я не могу использовать статический HTML. Я могу построить список в одиночку с помощью простого цикла, но хотел знать, есть ли доступный помощник по тегам. - person David Michael Gang; 12.11.2013
comment
Что ж, в вашем контроллере вы получите опции для списка данных, перенаправите их в шаблон и отобразите там вот так? Таким образом, шаблон не будет статичным... - person Slaven Tomac; 12.11.2013
comment
@SlavenTomac Я думаю, вы неправильно поняли, что на самом деле пытался сделать ОП. Я обновил вопрос, чтобы показать аналогичный помощник тега в действии. Простое заявление о том, что шаблон может вручную создать такой список, где это необходимо, бесполезно — это очевидное решение, которого OP пытается избежать. Помощники по тегам — более выразительное решение. - person amon; 12.11.2013