Расширить класс виджета kartik GridView — Расширенное приложение yii2

Я хочу создать новый класс, который расширяется от 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
{

}

проблема в том, что когда я вызываю представление сетки, возникает исключение ошибки: класс не найден. Итак, мне интересно, правильный ли это способ расширения класса виджетов ??


person soussou    schedule 05.01.2017    source источник
comment
Это исключение из-за отсутствия kartik\grid\GridView класса? Или другой?   -  person Bizley    schedule 05.01.2017
comment
нет, исключение касается моего класса, который не найден: используйте mywidget\grid\GridView;   -  person soussou    schedule 05.01.2017
comment
проверить пространство имен и путь   -  person Yasar Arafath    schedule 05.01.2017


Ответы (2)


Пространство имен, которое вы использовали, не зарегистрировано.

Самое простое решение — изменить пространство имен на одно из зарегистрированных в Yii 2.

  • для базового проекта это app, поэтому, если вы используете путь к расширенному классу mywidget/grid/GridView.php, пространство имен app\mywidget\grid
  • для расширенного проекта это common, frontend или backend, поэтому в зависимости от того, какую папку вы выберете, поместите туда папку и замените app соответственно

Если вы настаиваете на использовании пространства имен mywidget\grid, вы должны сначала зарегистрировать его. Подробнее об этом читайте в Руководстве: Автозагрузка классов

person Bizley    schedule 05.01.2017
comment
я меняю его на common\widgets и добавляю пространство имен: namespace common\widgets; и после этого я поставил: используйте common\widgets\grid\GridView в моем файле просмотра. Но та же ошибка - person soussou; 05.01.2017
comment
Вы установили другое пространство имен, чем вы звоните. Это namespace common\widgets;, затем use common\widgets\GridView; ИЛИ namespace common\widgets\grid;, а затем use common\widgets\grid\GridView; (класс также должен находиться в одной дополнительной папке grid). - person Bizley; 05.01.2017

исключение касается моего класса, который не найден: use mywidget\grid\GridView

похоже, что это проблема с автозагрузкой, убедитесь, что файл, с которым вы работаете, имеет тот же путь в вашем проекте, что и пространство имен, которое вы используете. в этом случае должно быть mywidget\grid\GridView.php или настроить пространство имен в соответствии с местоположением вашего файла

.. если это не так, предоставьте более подробную информацию об ошибке, которую вы получаете, и о случае использования вашего класса

person csminb    schedule 05.01.2017