所以,我希望在单独的地方有两个单选按钮,我一直在尝试搜索解决方案,每个人都建议使用放射学家,这在我的情况下是不可能的。
如果我这样说(work_part_time按钮):(下面)
<div class="row">
<div class="col-sm-2">
<?= $form->field($model, 'work_part_time')->radio(['label' => 'yes', 'value' => 1])?>
</div>-
<div class="col-sm-3">
<?= $form->field($model, 'hour_week')->textInput(['type' => 'number', 'placeholder' => 'Hour/Week'])->label(false)?>
</div>
<div class="col-sm-3">
<?= $form->field($model, 'part_time_rate')->textInput(['type' => 'number', 'placeholder' => 'rate/hour(SGD)'])->label(false)?>
</div>
</div>
<div class="form-group">
<?= $form->field($model, 'work_part_time')->radio( [0 => 'No'])->label('No')?>
</div>
<hr>
<div class="row">
<div class="col-sm-2">
<?= $form->field($model, 'work_part_time')->radio(['label' => 'yes', 'value' => 1])?>
</div>-
<div class="col-sm-3">
<?= $form->field($model, 'hour_week')->textInput(['type' => 'number', 'placeholder' => 'Hour/Week'])->label(false)?>
</div>
<div class="col-sm-3">
<?= $form->field($model, 'part_time_rate')->textInput(['type' => 'number', 'placeholder' => 'rate/hour(SGD)'])->label(false)?>
</div>
</div>
<div class="form-group">
<?= $form->field($model, 'work_part_time')->radio( [0 => 'No'])->label('No')?>
</div>
<hr>
我只能得到0值。
有人找到了解决方法吗?
答案 0 :(得分:10)
Yii会根据存储属性的值为单选按钮分配已选中或未选中的值,因此如果该值为0,它将检查具有值0的按钮。您的问题似乎是隐藏的输入Yii自动生成。正如其他人所建议的那样,如果您想为同一个字段添加多个单选按钮,则需要将其设置为null
。
如果用户检查另一个按钮,则所有其他具有相同名称的单选按钮将被取消选中。 Yii在创建按钮时自动生成属性的名称。 尝试使用这些单选按钮:
<?= $form->field($model, 'work_part_time')->radio(['label' => 'Option 1', 'value' => 1, 'uncheck' => null]) ?>
<?= $form->field($model, 'work_part_time')->radio(['label' => 'Option 2', 'value' => 0, 'uncheck' => null]) ?>
<?= $form->field($model, 'work_part_time')->radio(['label' => 'Option 3', 'value' => 2, 'uncheck' => null]) ?>
<?= $form->field($model, 'work_part_time')->radio(['label' => 'Option4', 'value' => 3, 'uncheck' => null]) ?>
每个按钮需要一个不同的值,这是保存记录时将存储在您的字段中的值。
只能检查一个按钮,因此如果您的示例中有多个具有相同值和相同名称的按钮,则只会检查该组中的最后一个按钮。我不知道这方面的方法。我建议您使用<formgroup>
将表单拆分为逻辑部分,每个部分都与work_part_time是yes还是no有关。你似乎已经开始这样做了!
答案 1 :(得分:2)
我亲自检查了系统中的代码。此代码返回0或1(分别选择单选按钮。)它工作正常。你可以使用我的代码。
在下面的代码中,如果您想将标签作为工作兼职或其他代码,请输入->label('Work Part Time');
.
. // Your code
<?= $form->field($model, 'work_part_time')->radioList([1 => 'yes', 0 => 'No'])->label('Work Part Time'); ?>
.
. // Your code
和
1)如果您想查看是&#39;如默认选中单选按钮,则必须按此<?php $model->status_id = 1?>
.
. // Your code
<?php $model->status_id = 1?>
<?= $form->field($model, 'work_part_time')->radioList([1 => 'yes', 0 => 'No'])->label('Work Part Time'); ?>
.
. // Your code
2)如果您想查看否&#39;如默认选中单选按钮,则必须按此<?php $model->status_id = 0?>
.
. // Your code
<?php $model->status_id = 0?>
<?= $form->field($model, 'work_part_time')->radioList([1 => 'yes', 0 => 'No'])->label('Work Part Time'); ?>
.
.//Your code
答案 2 :(得分:1)
试试这个:
<?php echo $form->radioButton($model,'user_work_part_time',array('value'=>1,'uncheckValue'=>null));
$form->radioButton($model,'user_work_part_time',array('value'=>0,'uncheckValue'=>null));
?>
在htmlOption数组中添加&#39; uncheckValue&#39; =&gt; null它将起作用。
答案 3 :(得分:0)
如果用“uncheckValue”替换“uncheck”,则表决的答案将起作用,除非它只会在列表中发布最后一个收音机的值(如果选中),其余为0。为了使它工作并按预期发布选定的值,我向它添加了一些JS代码。希望它会帮助有人在路上。
<!-- Complete solution for Radio buttons on separate places Yii2 together with its JS function-->
<php use yii\web\View; ?>
<?= $form->field($model, 'work_part_time')->radio(['label' => 'Option 1', 'value' => 1, 'uncheckValue' => null,'onChange'=>' if($(this).prop("checked")){ var radioValue = 1;$(this).val(radioValue); var radioName = "Model[work_part_time]"; RadioSelected(radioName,radioValue);}else{$(this).val("")};']) ?>
<?= $form->field($model, 'work_part_time')->radio(['label' => 'Option 2', 'value' => 0, 'uncheckValue' => null,'onChange'=>' if($(this).prop("checked")){ var radioValue = 0; $(this).val(radioValue); var radioName = "Model[work_part_time]"; RadioSelected(radioName,radioValue);}else{$(this).val("")};']) ?>
<?= $form->field($model, 'work_part_time')->radio(['label' => 'Option 3', 'value' => 2, 'uncheckValue' => null,'onChange'=>' if($(this).prop("checked")){ var radioValue = 2; $(this).val(radioValue); var radioName = "Model[work_part_time]"; RadioSelected(radioName,radioValue);}else{$(this).val("")};']) ?>
<?= $form->field($model, 'work_part_time')->radio(['label' => 'Option4', 'value' => 3, 'uncheckValue' => null,'onChange'=>' if($(this).prop("checked")){var radioValue = 3; $(this).val(radioValue); var radioName = "Model[work_part_time]"; RadioSelected(radioName,radioValue);}else{$(this).val("")};']) ?>
<?php
//JS Function
$RadioONSeparatePlaceJS = <<<JS
function RadioSelected(radioName,radioValue)
{
$('input[name="' + radioName + '"]').val(radioValue);
}
JS;
$this->registerJs($RadioONSeparatePlaceJS,View::POS_HEAD);
?>
感谢Joe Miller的精彩回答。