3

我的项目中有 GridView 的问题。我正在开发一个 Yii 应用程序并在我项目的不同视图中使用标准 zii 网格视图。我的问题是找到一种方法来从我的项目中的一个地方更改他们的 CSS 样式。我真的不想逐个更改它。有什么建议吗?

4

4 回答 4

12

对于全局设置,您可以像这样编辑应用程序配置文件 main.php:

return array(
…
'components'=>array(
   'widgetFactory'=>array(
     'widgets'=>array(
      'CGridView'=>array(
             'cssFile' => Yii::app()->request->baseUrl.'/css/gridview.css',,
        ),

请参阅指南中的全局自定义小部件部分

于 2013-01-19T21:03:44.883 回答
1

我只是想添加一个片段来阻止它一起加载。添加到主配置中的组件数组中。这从 1.1.3 开始可用

//stop zii loading css
    'widgetFactory'=>array(
        'widgets'=>array(
            'CGridView'=>array(
                'cssFile' => FALSE,
                ),
            ),
        ),

或者加载一个特定的样式表

//stop zii loading css and load a specific stylesheet
    'widgetFactory'=>array(
        'widgets'=>array(
            'CGridView'=>array(
                'cssFile' => Yii::app()->request->baseUrl.'/css/gridview.css',
                ),
            ),
        ),
于 2013-04-16T13:41:03.967 回答
0

要按视图更改它(我知道您说过您不想这样做,但无论如何对于可能正在搜索的任何人来说都是如此)是更改实例的cssFile属性,如下所示:CGridView

<?php $this->widget('zii.widgets.grid.CGridView', array(
    'id' => 'user-grid',
    'dataProvider' => $model->search(),
    'filter' => $model,
    'ajaxUpdate' => false,
    'cssFile' => Yii::app()->request->baseUrl.'/css/gridview.css',
     ...

在上面的示例中,我们使用了一个名为gridview.css的 CSS 文件,而不是默认的 CSS 文件。

要全局更改它(跨所有实例CGridView),您可以在其中一个 CSS 文件中手动覆盖 gridview 的 CSS 属性(请记住文件的加载顺序,您可能需要使用!important

或者

您可以简单地编辑位于以下位置的 gridview 的框架资产:

framework/zii/widgets/assets/gridview/styles.css
于 2013-01-19T16:10:55.723 回答
0

在搜索了很多关于这个问题之后,我找不到任何好的和标准的解决方案。因此,我使用了一种不寻常且可能不是标准的方法来解决该问题,并将其放在这里以供可能也遇到我的问题的人使用。
这个想法是,当您使用 zii yii 网格视图时,默认情况下,在运行时它会发送一个请求以获取其适当的 CSS 文件,因此在控制器中我不允许它使用以下代码获取其原始文件:

Yii::app()->clientScript->scriptMap = array(
            'pager.css' => false,
            'styles.css' => false,
        );

关键是这段代码阻止了对项目中所有styles.css 文件的所有请求。所以要小心。
我做的下一件事是将请求更改为 sytles.css 和 pager.css 文件。我定义了两个名为 gridStyle.css 和 pager.css 的自定义 css 文件,并使用它们代替这两个原始文件。因此,通过以下代码,我为此使用了一些映射:

 Yii::app()->clientScript->scriptMap = array(
            'pager.css' => Yii::app()->theme->baseUrl . '/css/pager.css',
            'styles.css' => Yii::app()->theme->baseUrl . '/css/gridStyle.css',
        );

通过这段代码,我说如果有对 styles.css 和 pager.css 文件的请求,请将它们替换为我的自定义文件。正如我所说,这可能不是一个好的解决方案,但它是我唯一的解决方案。

于 2013-01-20T04:58:13.337 回答