2015-12-11 49 views
4

所以,我想在兩個單獨的地方有兩個單選按鈕,我一直在試圖尋找解決方案,每個人都建議使用放射元素,這在我的情況下是不可能的。單選按鈕組在yii2單獨的地方

如果我把它像這樣(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

我不明白你的問題,你想使用無線電盒什麼功能。 –

+0

嗨@AmiteshKumar,感謝您的答覆 我要分開不同的地方 第一排兩個按鈕,是 第二排,沒有 沒有在代碼中使用單選列表 –

+0

您使用三個單選按鈕,1是2否,那麼最新的問題是什麼? –

回答

7

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有關。你似乎已經開始這樣做了!

+0

它不工作,我仍然得到0 .. –

+0

我修改了我的答案。我已經在我的IDE中測試過了,它可以正常工作,但請注意我關於在表單中有三個單選按鈕的評論。 –

+0

我真的用6個按鈕測試了程序,它會工作嗎? –

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' 在htmlOption陣列=>空它會奏效。

+0

由於KUMAR,它仍不能工作 \t \t \t 字段($模型, 'firstdegreescore') - >無線電([ '標籤'=>假, '值'=> '1' \t 'uncheckValue'= > null]]>> \t \t \t field($ model,'firstdegreescore') - > radio(['label'=> false,'value'=>'2','uncheckValue'=> null])? > 我正在使用yii2,所以我用yii2的方式做了它 –

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)如果你想查詢'是的'爲默認選中單選按鈕,那麼你必須像這樣指定<?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 
+0

嗨,我不想使用收音機列表,因爲我想在不同的地方分開兩個收音機 –

0

如果替代 「取消」在「取消選中值」的情況下,投票的答案將起作用,除非選中時只發送列表中最後一個無線電的值,其餘爲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); 
?> 

謝謝你的偉大的答案喬米勒。