【问题标题】:Customizing/extending CGridView widget YII自定义/扩展 CGridView 小部件 YII
【发布时间】:2014-05-19 06:49:24
【问题描述】:

我对 CGridView 过滤器非常熟悉,它是一个非常可定制的东西。但是生活并不完美,我需要更改几乎完整的 cgridview 布局。 (功能将是相同的[过滤、排序])。

那么我应该如何开始这个“定制”,如何扩展 CGridView 的外观?

仅供参考,我需要这样的东西

【问题讨论】:

    标签: php sorting yii filter cgridview


    【解决方案1】:

    如果你打开 CGridView 的类很容易,你会在第 449 行看到:

    public function renderItems()
    {
        if($this->dataProvider->getItemCount()>0 || $this->showTableOnEmpty)
        {
            echo "<table class=\"{$this->itemsCssClass}\">\n";
            $this->renderTableHeader();
            ob_start();
            $this->renderTableBody();
            $body=ob_get_clean();
            $this->renderTableFooter();
            echo $body; // TFOOT must appear before TBODY according to the standard.
            echo "</table>";
        }
        else
            $this->renderEmptyText();
    }
    

    你基本上需要扩展类,把它放在一个文件夹中,你可以在扩展中访问它,并覆盖这个函数中的方法

    【讨论】:

    • 我查看了代码,它非常难以理解。唯一的问题是我需要将特定的数据放到特定的地方,我认为这个 CGridView 的想法对于这个问题来说是非常糟糕的。
    • 我认为扩展比重新编写要好,尝试像标记一样渲染部分,或者有更多可以赋值的字段。
    • 我刚刚发现了 CListView,它非常适合我的需要。使用过滤器非常容易。无论如何感谢您的帮助!
    【解决方案2】:

    要更改网格外观,请不要更改母文件(CGridView.php in yii\framework\zii\widgets\grid)。将 CGridView 扩展为新类并更改 HTML 结构。

    Here 是很好的解释。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-05
      • 1970-01-01
      • 1970-01-01
      • 2014-03-22
      • 2011-02-23
      • 1970-01-01
      相关资源
      最近更新 更多