【问题标题】:Extend kartik GridView widget class - Advanced application yii2扩展 kartik GridView 小部件类 - 高级应用 yii2
【发布时间】:2017-01-05 07:59:29
【问题描述】:

我想创建一个从 yii2 Kartik gridview 扩展的新类

namespace mywidget\grid;

use kartik\base\Config;
use kartik\dialog\Dialog;
use kartik\mpdf\Pdf;
use Yii;
use yii\base\InvalidConfigException;
use yii\bootstrap\ButtonDropdown;
use yii\grid\Column;
use kartik\grid\GridView as YiiGridView;
use yii\helpers\ArrayHelper;
use yii\helpers\Html;
use yii\helpers\Json;
use yii\helpers\Url;
use yii\web\JsExpression;
use yii\web\View;
use yii\widgets\Pjax;
class GridView extends YiiGridView
{

}

问题是当我调用网格视图时,抛出错误异常:找不到类。 所以我想知道这是否是从小部件类扩展的正确方法??

【问题讨论】:

  • 这是关于缺少kartik\grid\GridView 类的异常吗?还是其他?
  • 不,例外是关于我的类没有找到:使用 mywidget\grid\GridView;
  • 检查命名空间和路径

标签: gridview yii2 extend kartik-v


【解决方案1】:

你使用的命名空间没有注册。

最简单的解决方案是将命名空间更改为使用 Yii 2 注册的命名空间之一。

  • 对于基本项目它是app - 所以如果你的扩展类的路径是mywidget/grid/GridView.php 命名空间是app\mywidget\grid
  • 对于高级项目,它是 commonfrontendbackend,因此取决于您选择的文件夹,并相应地替换 app

如果你坚持使用mywidget\grid 命名空间,你必须先注册它。在指南中了解更多信息:Class Autoloading

【讨论】:

  • 我将其更改为 common\widgets 并将命名空间:namespace common\widgets;在此之后我放:在我的视图文件中使用 common\widgets\grid\GridView。但同样的错误
  • 您设置的命名空间与您调用的不同。它是namespace common\widgets;,然后是use common\widgets\GridView; OR namespace common\widgets\grid;,然后是use common\widgets\grid\GridView;(类也必须在另一个文件夹grid 中)。
【解决方案2】:

例外是关于我的班级没有找到:use mywidget\grid\GridView

这听起来像是一个自动加载问题,请确保您正在使用的文件在您的项目中与您正在使用的命名空间具有相同的路径。在这种情况下应该是mywidget\grid\GridView.php 或调整您的命名空间以匹配您的文件位置

.. 如果不是这样,请提供有关您收到的错误和您的班级用例的更多详细信息

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-14
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多