使用 mojolicious 从动态生成的项目中获取多个值
Get multiple values from dynamically generated items with 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;
% }
我正在渲染所有内容,没问题。我可以使用保存表单(路由到更改其名称的 sub。问题出在 inserform。插入应该检查它检查的每个单选按钮并获取值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>
这可以使用这段代码来完成:
%= 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);
}
};
我正在开发一个小网页,它从几个文件中读取数据并将其呈现到网站中。在该网站中,用户必须能够选择一个或多个项目并对这些项目执行一些操作(更改名称、附加值等)。我已经能够完成大部分工作,但现在我遇到了一个问题。我有这个表格:
<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;
% }
我正在渲染所有内容,没问题。我可以使用保存表单(路由到更改其名称的 sub。问题出在 inserform。插入应该检查它检查的每个单选按钮并获取值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>
这可以使用这段代码来完成:
%= 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);
}
};