Yii2:验证是否至少选择了一个复选框

2023-12-15

我有多个音乐版本供用户创建促销,在促销创建表单上,我们列出了所有版本,我正在使用表单模型来创建促销,其中我为我的几个输入定义了所有规则促销形式模型。

我想检查用户在保存表单时是否至少选择了一个版本,但它不起作用,因为复选框是动态创建的。

我该字段的表单代码

foreach ($releaseInfo as $releases) {
    if (!is_null($releases->releaseSongs)) {
        echo "<fieldset><legend>" . \yii\helpers\Html::activeCheckbox($model, 'selected_releases[]', ['id' => 'release_' . $releases->id, 'onclick' => '$("#songs_' . $releases->id . '").toggle()', 'label' => false]) . "&nbsp;" . $releases->name . "</legend>";
        foreach ($releases->releaseSongs as $k => $v) {
            echo "<div id='songs_" . $releases->id . "' style='display:none'>";
            echo "<div>";
            echo $v->song->name;
            echo "</div>";
            echo "</div>";
        }
    }
}

echo "</fieldset>";

我的模型规则

['selected_releases', 'required', 'on' => ['catalog', 'catalog_update'], 'requiredValue' => 1,
    'when' => function ($model) {return ($model->scenario == self::SCENARIO_CATALOG_BASED || $model->scenario == self::SCENARIO_CATALOG_BASED_UPDATE);},
    'whenClient' => 'function(attribute,value){return ("' . $this->scenario . '"=="' . self::SCENARIO_CATALOG_BASED . '" || "' . $this->scenario . '"=="' . self::SCENARIO_CATALOG_BASED_UPDATE . '")}',
    'message' => 'You must select atleast one release',
]

当我提交表单时,发布的输入变量如下所示

 [selected_releases] => Array(
            [0] => 0
            [1] => 0
 )

the requiredValue该规则不起作用,因为selected_releases是一个值数组,它总是说

You must select atleast one release我应该如何使用requiredValue规则的参数选项,其方式是检查至少一个复选框的选择

OR

我是否必须创建一个自定义验证方法并在验证时调用它


我为此目的使用了自定义验证方法,我的验证规则如下所示

['selected_releases', 'checkreleaseSelection'
    , 'on' => ['catalog', 'catalog_update'],
    'when' => function ($model) {return ($model->scenario == self::SCENARIO_CATALOG_BASED || $model->scenario == self::SCENARIO_CATALOG_BASED_UPDATE);},
    'whenClient' => 'function(attribute,value){return ("' . $this->scenario . '"=="' . self::SCENARIO_CATALOG_BASED . '" || "' . $this->scenario . '"=="' . self::SCENARIO_CATALOG_BASED_UPDATE . '")}',
]

定制方法

public function checkreleaseSelection()
{
    $error = true;
    foreach ($this->selected_releases as $selection) {
        if ($selection) {
            $error = false;
        }
    }
    if ($error) {
        $this->addError('selected_releases', 'You must select atleast one of your releases to continue');
    }
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Yii2:验证是否至少选择了一个复选框 的相关文章

随机推荐

  • 扩展内容脚本(JS/或 CSS)未应用

    我想要一个带有我自己的 CSS 代码的 Google Chrome 扩展程序 用于网站编程 我尝试将我自己的 CSS 脚本包含在 content scripts 中 但没有成功 我无法像 JavaScript 那样插入 css 这是我的代码
  • 无法查询存储在 Firebase 动态/深层链接中的参数

    我正在手动创建 Firebase 动态 深层链接 如下所示 Uri BASE URI Uri parse http example com String packageName getBaseContext getPackageName U
  • 将类似配置哈希的数据读取到 perl 哈希中

    我有一个配置文件config txt like sim time end 63 1152e6 sim output times 2 592e6 31 5576e6 63 1152e6 sim fluid comps H2O H 2O CO2
  • 如何处理与 PHP 回显的单引号和双引号的 HTML 代码?

    我不确定这是否是一种更简洁的编写方式 但我认为我在这里没有问题 gt break 这里更复杂 因为要回显的元素有单引号和双引号 default echo
  • 覆盖引用的样式属性

    读完后对主题属性的引用我试图引用我设置的自定义主题中的属性值 我正在将用户定义的样式应用于CheckedTextView
  • Scrapy:为什么我的响应对象没有 body_as_unicode 方法?

    我写了一个蜘蛛 第一次运行得非常好 我第二次尝试运行它时 它并没有超出范围start urls 我尝试过了fetch中的网址scrapy shell并创建一个HtmlXPathSelector返回的响应中的对象 那是我收到错误的时候 所以步
  • Horizo​​ntalScrollView 和适配器

    我可以将一些适配器类与 Horizo ntalScrollView 类一起使用 就像将其与 ListView 一起使用一样吗 如果你正在寻找水平列表视图 github上有很多其他人完成的项目 你可以看看它们 DevsmartLib Andr
  • 无法访问 Firebase 对象属性。值显示为未定义 ANGULARFIRE

    我想为我所做的演示进行自定义登录 但遇到了问题 我使用用户名访问 Firebase 内的引用 url 得到一个返回的对象 如果我想访问单个属性 我会得到未定义的值 但是如果我在 html 中添加 returnedObj name 显示该值
  • Opera:无法从 window.open() 获取加载事件

    var openedWindow window open test html title openedWindow addEventListener load function console log received load event
  • Gson使用TypeAdapter或Json Deserializer将数据从错误列表转换为空列表

    让我们从例子开始 如果数据正确的话应该是 Beijing cities是空的 code 200 msg success data id 1 name Beijing cities id 2 name Guangdong cities id
  • 组织小型公用事业功能

    经过多年的编程 我们都有一组用作辅助实用程序的小函数 我们希望它是内置的 这样我们就可以在任何项目中使用它 并让更多的人照顾 测试和优化 我有相当多的这些功能的集合 我想知道你们是如何组织它们的 你有什么建议吗 我就是这样做的 我把它放在一
  • Backbone.js fetch() JSON 到模型 get() 返回未定义

    基本上我想获取一个JSON文件并将其存储在模型中 但是 当我尝试通过访问属性时get 它返回未定义 假设 JSON 文件有一个游戏数组 其中包含具有某些属性的对象 这并不重要 只是想将它们保存在模型中并访问它们 所以我正在做这样的事情 va
  • 使用 NULL 时的查询性能

    我想知道 NULL 值如何影响 SQL Server 2005 中的查询性能 我有一个与此类似的表 简化 ID ImportantData QuickPickOrder 1 Some Text NULL 2 Other Text 3 3 a
  • NHibernate 惰性属性行为?

    我一直在尝试让 NHibernate 参与我在工作场所进行的一个项目的开发 由于我必须非常重视性能 因此我一直在对包含数千条记录的现有项目表运行概念验证压力测试 所有这些记录都包含一个大型文本列 然而 当选择这些记录的集合时 select语
  • 在 DP Java 中以编程方式设置 ImageView 大小 [重复]

    这个问题在这里已经有答案了 我想设置一个的宽度和高度ImageView in Android The ImageView不存在于XML 它是在这里创建的 public void setImageView int i Integer d Li
  • 如何更改 JOptionPane 内的按钮背景

    我想知道是否有人知道是否可以更改按钮内的背景颜色JOptionPane 我知道如何改变整个JOptionPane背景使用UIManager 但知道我想要的是在JOptionPane分离各个颜色 如果我能做到这一点 我会怎么做 谢谢您的帮助
  • 文件中的 JetBrains PhpStorm 红色不会消失

    我有一些红色的文件 它们绝对没有错误 所有内容都正确编译 网络也正确显示 控制台上有 0 个错误 我实际上是复制粘贴 Angular 教程 它肯定是 100 无错误 但文件仍然是红色的 我很生气 因为它看起来像一个错误 有人有解决这个问题的
  • 使用pyaudio进行录音

    我正在尝试使用 python 录制语音 我尝试使用 pyaudio 模块 它在我的计算机上保存了一个 wav 文件 但录制了静态声音 有什么建议么 import pyaudio import wave CHUNK 1024 FORMAT p
  • 将 Unicode 字符串转换为转义 ASCII 字符串

    我怎样才能转换这个字符串 This string contains the Unicode character Pi 转换成转义的 ASCII 字符串 This string contains the Unicode character P
  • Yii2:验证是否至少选择了一个复选框

    我有多个音乐版本供用户创建促销 在促销创建表单上 我们列出了所有版本 我正在使用表单模型来创建促销 其中我为我的几个输入定义了所有规则促销形式模型 我想检查用户在保存表单时是否至少选择了一个版本 但它不起作用 因为复选框是动态创建的 我该字