我在db中的格式is_active
中有一个简单的字段tinyint
,当我提交表单复选框时,我在规则中定义为整数复选框,或者取消选中它总是提交0。
echo $form->field($model, 'is_active')->checkbox();
答案 0 :(得分:0)
我在处理表单的复选框时使用它:
$model= (isset($_POST['is_active'])) ? 1 : 0;
另外,请确保没有为复选框设置特定值。否则你会得到奇怪的结果。
答案 1 :(得分:0)
这个补丁对我有用,但我仍然想知道为什么这个问题还没有在yii2平台上报道过,或者我在这里做错了什么
diff --git a/vendor/yiisoft/yii2/helpers/BaseHtml.php b/vendor/yiisoft/yii2/helpers/BaseHtml.php
index 66a5730..d2bd49c 100644
--- a/vendor/yiisoft/yii2/helpers/BaseHtml.php
+++ b/vendor/yiisoft/yii2/helpers/BaseHtml.php
@@ -706,10 +706,10 @@ class BaseHtml
*
* @return string the generated checkbox tag
*/
- public static function checkbox($name, $checked = false, $options = [])
+ public static function checkbox($name, $value, $checked = false, $options = [])
{
$options['checked'] = (bool) $checked;
- $value = array_key_exists('value', $options) ? $options['value'] : '1';
+ //$value = array_key_exists('value', $options) ? $options['value'] : '1';
if (isset($options['uncheck'])) {
// add a hidden field so that if the checkbox is not selected, it still submits a value
$hidden = static::hiddenInput($name, $options['uncheck']);
@@ -892,7 +892,7 @@ class BaseHtml
if ($formatter !== null) {
$lines[] = call_user_func($formatter, $index, $label, $name, $checked, $value);
} else {
- $lines[] = static::checkbox($name, $checked, array_merge($itemOptions, [
+ $lines[] = static::checkbox($name, $value, $checked, array_merge($itemOptions, [
'value' => $value,
'label' => $encode ? static::encode($label) : $label,
]));
@@ -1446,7 +1446,7 @@ class BaseHtml
$options['id'] = static::getInputId($model, $attribute);
}
- return static::checkbox($name, $checked, $options);
+ return static::checkbox($name, $value, $checked, $options);
}
/**