我在 Mojolicious 中有一个模板,用作 SQL 数据库的前端。要切换 bool 值(yes=1/no=0),我使用的是复选框输入类型。
这是模板中的代码:
<input type="checkbox" name="reinigung_ja" id="reinigung_ja" value="1"
<%= $rs->reinigung_ja ? 'checked' : ''; %>
> Reinigung <br>
查看数据库中reinigung_ja字段的当前状态以及将其从“否”切换到"is"都可以正常工作。但如果未选中该复选框,则无法从"is"切换到“否”,因为没有发送任何参数。
我目前的解决方法是 Controller 中的这段代码:
my $fields;
foreach ($c->req->body_params->param) {
$fields->{"$_"} = $c->req->body_params->param("$_");
}
# Workaround starts here ...
if (not exists $fields->{'reinigung_ja'}) {
$fields->{'reinigung_ja'} = 0;
}
# end of workaround;
$rs->update($fields);
不知道有没有更好的解决办法?
最佳答案
您可以初始化默认值,然后更新它,如下所示:
# Initialize defaults
my $fields = {
'reinigung_ja' => 0,
};
for ( $c->req->body_params->param ) {
$fields->{$_} = $c->req->body_params->param($_);
}
$rs->update($fields);
这是稍微少的代码,但我不确定哪个是更好的模式。如果您明确查找它不存在,则代码相当可读。
关于html - Mojolicious 中的复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25490010/