通过mojolicious从动态生成的项中获取多个值

时间:2017-08-28 06:50:31

标签: html forms perl mojolicious

我正在开发一个小网页,从几个文件中读取数据并将其渲染到网站中。在该网站中,用户必须能够选择一个或多个项目并执行一些工作(更改名称,附加值等)。我已经完成了大部分工作,但现在我遇到了问题。我有这样的表格:

<div id="inside">
    % foreach my $value ( @{ stash('tagitems') } ) {
        <div id="inside">
            %= form_for 'save' => begin
                <input type="radio" name="radioid">
                %= hidden_field 'id' => $indexnum
                %= input_tag 'tag', value=>"$value", size=>"50%"
                %= submit_button 'Save changes'
                <%= select_field 'levelSelected' => [ @{ stash('levelsArray') }] %>
                <button type="submit" form="insertForm">Insert</button>
            % end
            <form action="/insert" id="insertForm"></form>

        </div>
        % $indexnum += 1;
    % }

我将所有内容渲染出来并且没问题。我可以使用保存表单(路由到更改它的名称的子名称。问题出在 inserform 。插入应该检查每个单选按钮它是否已经过了选中并取值标记 levelSelected

我该怎么做?

感谢。

修改

我有多个看起来像这样的实例: enter image description here

所以,我需要只有一个插入按钮(而不是每个项目一个),找出所选的任何单选按钮,并在单击提交按钮时获取所有已检查项目(tag和levelSelected)的信息。

EDIT2 - 有效的代码: 我找到了办法。代码在这里:

%= form_for 'save' => begin
    <button type="submit" formaction="insert">Insert</button>
    % foreach my $value ( @{ stash('tagitems') } ) {
        <div id="inside">
            <input type="checkbox" name="insert">
            %= hidden_field 'id' => $indexnum
            %= input_tag 'tag', value=>"$value", size=>"50%"
            <button type="submit" formaction="save">save</button>
            <%= select_field 'levelSelected' => [ @{ stash('levelsArray') }] %>
        </div>
    % }
    % end
</form>

1 个答案:

答案 0 :(得分:0)

这可以使用以下代码完成:

%= form_for 'save' => begin
    <button type="submit" formaction="insert">Insert</button>
    % foreach my $value ( @{ stash('tagitems') } ) {
        <div id="inside">
            <input type="checkbox" name="insert">
            %= hidden_field 'id' => $indexnum
            %= input_tag 'tag', value=>"$value", size=>"50%"
            <button type="submit" formaction="save">save</button>
            <%= select_field 'levelSelected' => [ @{ stash('levelsArray') }] %>
        </div>
    % }
    % end
</form>

然后,在控制器中:

get '/insert' => sub {
    my $mojo = shift;
    my @all_values;

    foreach my $field ('id', 'insert', 'tag', 'levelSelected') {
       @all_values = @{$mojo->every_param($field)};
        print Dumper (@all_values);
  }
};