【问题标题】:how to handle an array as a field in CGridView如何在 CGridView 中将数组作为字段处理
【发布时间】:2013-04-13 15:35:12
【问题描述】:

我正在使用 CGridView 但其中一个字段是数组 ['xx' ,'yy' , 'zz',...] 如何显示我搜索了答案但没有找到

是否可以使用 DropDownlist 之类的东西来显示数组中的值

【问题讨论】:

  • 如果 value 是一个数组,为什么要使用下拉列表?在这种情况下没有什么可以选择的。我宁愿使用字符串作为逗号分隔的数组项列表。您可以使用 getter 方法,类似于下面描述的 @frostyterrier。

标签: yii cgridview


【解决方案1】:

我在模型中有一个静态数组special_offer

它将按值过滤;这是一个下拉列表示例;

我用数组替换了cgridview 中的一个字段,如下所示:

    array(
        'name' => 'special_offer',
        'value' => 'Package::$special_offer[$data->special_offer]',
        'filter' => Package::$special_offer,
    ),

【讨论】:

    【解决方案2】:

    为了在 CGridView 列中使用 dropDownList,您的数组需要是关联的。我建议您在模型中创建一个方法,将其转换为关联数组,例如:

    public function getAssociativeArray()
    {
        $array = array('xx', 'yy', 'zz'); // or use an attribute value
        return array_combine(array_values($array), $array);
    }
    

    然后在您的 CGridView 中,将此添加为一列,用您自己的替换模型/字段名称:

    array(
        'name' => 'yourFieldName',
        'type' => 'raw',
        'value' => 'CHtml::activeDropDownList($data, "yourFieldName", YourModel::model()->associativeArray)', 
    ),
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-05
      相关资源
      最近更新 更多