在Yii2上使用RadioList的正确方法

时间:2018-02-19 13:21:26

标签: yii2

我试图使用多个" radioList"具有相同值的字段,但是当使用相等的值时,它们不会出现。

在我的示例中,值是分数,标签是项目的名称。

请参阅代码:

<?= $form->field($model, 'item_bacen')->radioList([
        15  => 'NÃO HÁ REGISTROS DE INADIPLENCIA', 
        -6  => 'HÁ HISTORICO DE DÍVIDA VENCIDA',
         0  => 'HISTÓRICO DE RENEGOCIAÇÃO',
         0  => 'DÍVIDA VENCIDA NA DATABASE ATUAL',
         0  => 'REGISTRO DE PREJUÍZO',
      ]) ?>
  

请注意,我有5个选项,3个具有相同的值。

以下是它的外观:

enter image description here

更新 - 它的工作原理如下:

  <?= $form->field($model, 'item_bacen')->radio(['label' => 'NÃO HÁ REGISTROS DE INADIPLENCIA', 'value' => 15, 'uncheck' => null]) ?>
  <?= $form->field($model, 'item_bacen')->radio(['label' => 'HÁ HISTORICO DE DÍVIDA VENCIDA', 'value' => -6, 'uncheck' => null]) ?>
  <?= $form->field($model, 'item_bacen')->radio(['label' => 'HISTÓRICO DE RENEGOCIAÇÃO', 'value' => 0, 'uncheck' => null]) ?>
  <?= $form->field($model, 'item_bacen')->radio(['label' => 'DÍVIDA VENCIDA NA DATABASE ATUAL', 'value' => 0, 'uncheck' => null]) ?>
  <?= $form->field($model, 'item_bacen')->radio(['label' => 'REGISTRO DE PREJUÍZO', 'value' => 0, 'uncheck' => null]) ?>

1 个答案:

答案 0 :(得分:1)

使用radioList activeRecord小部件无法执行您所需的操作,因为选项作为数组传递,您不能使用具有不同值的相同数组键(最后一个始终覆盖以前的键)。

您可以在视图中自己编写此字段的HTML或使用不同的唯一键传递选项,然后在收到值时将其映射到您需要的那个:

<?= $form->field($model, 'item_bacen')->radioList([
    0  => 'NÃO HÁ REGISTROS DE INADIPLENCIA', 
    1  => 'HÁ HISTORICO DE DÍVIDA VENCIDA',
    2  => 'HISTÓRICO DE RENEGOCIAÇÃO',
    3  => 'DÍVIDA VENCIDA NA DATABASE ATUAL',
    4  => 'REGISTRO DE PREJUÍZO',
  ]) ?>

在接收端有类似的东西:

switch ($model->item_bacen) {
    case 0:
        $model->item_bacen = 15;
        break; 
    case 1:
        $model->item_bacen = -6;
        break;
    case 2:
    case 3:
    case 4:
        $model->item_bacen = 0;
        break;
}