6

だから、2つのラジオボタンを別々の場所に置きたいのですが、解決策を探していましたが、私の場合は不可能なラジオリストを使用することを誰もが提案しています。

このように置くと(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 しか取得できません。

誰もがこれに対する解決策を見つけましたか?

4

4 に答える 4

13

Yii は、保存された属性の値に応じて、ラジオ ボタンにチェック済みまたは未チェックの値を割り当てます。そのため、値が 0 の場合、値 0 のボタンをチェックします。あなたの問題は、Yii が自動的に隠した入力だったようです。生成します。他の人が示唆しているようnullに、同じフィールドに複数のラジオボタンが必要な場合は、これをに設定する必要があります。

ユーザーが別のボタンをオンにすると、同じ名前の他のすべてのラジオ ボタンがオフになります。属性の名前は、Yii がボタンを作成するときに、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]) ?>

各ボタンには異なる値が必要です。これは、レコードが保存されるときにフィールドに保存される値です。

チェックできるボタンは 1 つだけなので、例のように同じ値と同じ名前のボタンが複数ある場合は、セット内の最後のボタンのみがチェックされます。私はこれを回避する方法を知りません。フォームを論理セクションに分割することをお勧めします<formgroup>。各セクションは、work_part_time が yes か no かに関連しています。あなたはこれを始めたようです!

于 2015-12-11T06:51:18.307 に答える
2

私は自分のシステムであなたのコードを個人的にチェックしました。このコードは (ラジオ ボタンの選択に応じて) 0 または 1 を返します。正常に動作しています。私のコードを使用できます。

以下のコードで、 Work part timeなどのラベルを付けたい場合は、次のように入力します。->label('Work Part Time');

.
. // Your code
<?= $form->field($model, 'work_part_time')->radioList([1 => 'yes', 0 => 'No'])->label('Work Part Time'); ?>  
.
. // Your code

1)デフォルトのチェック済みラジオボタンとして「はい」をチェックしたい場合は、このように割り当てる必要があります<?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)デフォルトのチェック済みラジオボタンとして「いいえ」をチェックしたい場合は、このように割り当てる必要があります<?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
于 2015-12-11T07:24:42.470 に答える
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)); 
?>

'uncheckValue'=>null を htmlOption 配列に追加すると機能します。

于 2015-12-11T05:06:25.400 に答える