pear2007 2015-11-16 18:59:02 5346次浏览 9条回复 1 0 0

ListView::widget ListView小部件中的data-key可以去掉不

<div id="bigtList">
    <div data-key="1">
         <a href="/index.php?r=big%2Fview&id=1">行业新闻</a>
    </div>
    <div data-key="2">
         <a href="/index.php?r=big%2Fview&id=2">公司新闻</a>
    </div>
</div>

我的本意是想展示一个 个分类信息想用li但是里面的 <div data-key="2"> 怎么也去不掉 或者有其他的 实现方式 也请指点下

大概想实现 这样的效果

<div id="bigtList">
    <ul>
        <li><a href="/index.php?r=big%2Fview&id=1">行业新闻</a></li>
        <li><a href="/index.php?r=big%2Fview&id=2">公司新闻</a></li>
    </ul> 
</div>
  • 回复于 2015-11-16 23:06 举报

    这里应该是可以自定义的,它自身的用法里应该有详细说明

  • 回复于 2015-11-18 14:17 举报

    方面 没研究明白 只好从新 改了下
    新建了 ListViewli.php 在 ListView目录

    <?php
     
    
    namespace yii\widgets;
    
    use Yii;
    use yii\helpers\ArrayHelper;
    use yii\helpers\Html;
    
     
    class ListViewli extends  ListView
    {
         /**
         * Renders a single data model.
         * @param mixed $model the data model to be rendered
         * @param mixed $key the key value associated with the data model
         * @param integer $index the zero-based index of the data model in the model array returned by [[dataProvider]].
         * @return string the rendering result
         */
        public function renderItem($model, $key, $index)
    //    public function renderItem($model  )                              //  alen  zhange  2015年11月18日12:17:42
        {
            if ($this->itemView === null) {
                $content = $key;
            } elseif (is_string($this->itemView)) {
                $content = $this->getView()->render($this->itemView, array_merge([
                    'model' => $model,
                    'key' => $key,
                    'index' => $index,
                    
                    'widget' => $this,
                ], $this->viewParams));
            } else {
                $content = call_user_func($this->itemView, $model, $key, $index, $this);
            }
            $options = $this->itemOptions;
     
            $tag = ArrayHelper::remove($options, 'tag', 'li');
    
     
                return $content;
                
    //        }
        }
    }
    
    
  • 回复于 2015-11-18 14:18 举报

    改好后效果

      <div id="bigtList" class="list-view">      
      <a href="/index.php?r=big%2Fview&id=1">行业新闻</a>     
      <a href="/index.php?r=big%2Fview&id=2">公司新闻</a>      
      <a href="/index.php?r=big%2Fview&id=3">国际新闻1</a>    
      <a href="/index.php?r=big%2Fview&id=4">科技新闻</a>     
    </div>
    
  • 回复于 2015-11-18 14:38 举报

    有个更好的招
    先添加个

    public  $tags='li';
    

    改之前

    $tag = ArrayHelper::remove($options, 'tag','div');
    

    改之后

    $tag = ArrayHelper::remove($options, 'tag', $this->tags);
    
  • 回复于 2015-11-18 14:40 举报

    调用的时候

    // 'tags'=>'div',
    // 'tags'=>'li',

    随意改

  • 回复于 2015-12-24 17:36 举报

    来节个帖吧 让走在这卡住的朋友 少走点弯路 itemOptions 少找个UL 研究出来了补上

       <?=
        ListView::widget([
                        'dataProvider' => $chdataProvider,
                        'layout' => '{items}{pager}',
     
                        'itemOptions' => [ 'tag'=>'li', 'class' => 'item'],
                        'itemView' => function ($model, $key, $index, $widget) {
                    return Html::a(Html::encode($model->title), ['channel/view', 'id' => $model->id]);
                },
        ])
    ?>
    
  • 回复于 2015-12-24 18:04 举报

    'itemView' => '_post',

    无语结贴

  • 回复于 2017-05-11 15:13 举报

    非常感谢,mark!很用帮助啊

  • 回复于 2017-07-25 10:03 举报

    看看框架代码和API就有答案 tag false

    echo \yii\widgets\ListView::widget([
        'itemOptions' => ['tag' => false],
        ...
    ]);
    
    1 条回复
    回复于 2018-11-16 16:17 回复

    完美解决,非常感谢啊

    觉得很赞
您需要登录后才可以回复。登录 | 立即注册