html - Mojolicious 中的复选框

标签 html perl mojolicious

我在 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/

相关文章:

html - Angular 2 : Expression containing markup

javascript - 如何在 CSS 代码之前加载 jQuery?

javascript - 无法从由 Jquery 加载到另一个 html 的 HTML 中定位类

perl 客户端-SSL-警告 : Peer certificate not verified

perl - 如何在 Mojo::Redis2 中保存哈希值?

perl - 为什么在使用 MojoX::JSON::RPC::Service 时我的 Mojo 测试与 FF rest 客户端的工作方式不同?

javascript - 如何找到一组单选按钮的值?

perl - 使用 Perl 解析 block 中的文本

perl - 如何将 autodie 与非内置函数一起使用?

perl - 如何将找不到的 Mojolicious Lite 默认错误更改为自定义 json 响应