2017-01-05 5 views
0

Ich möchte eine neue Klasse erstellen, diekartik Gridview-Widget-Klasse erweitern - Erweiterte Anwendung yii2

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 
{ 

} 

das Problem ist, wenn ich Rasteransicht aufrufen, wird eine Fehler Ausnahme ausgelöst wird, von yii2 Kartik gridview erweitern: Klasse nicht gefunden . Also frage ich mich, ob es der richtige Weg ist, um von einer Widget-Klasse zu erweitern?

+0

Ist diese Ausnahme über die fehlende 'kartik \ Grid \ GridView' Klasse? Oder andere? – Bizley

+0

Nein, die Ausnahme betrifft meine Klasse, die nicht gefunden wird: Verwenden Sie mywidget \ grid \ GridView; – soussou

+0

Überprüfen Sie Namespace und Pfad –

Antwort

0

die Ausnahme ist über meine Klasse, die nicht gefunden wird: use mywidget\grid\GridView

es klingt wie es ein autoloading Problem ist, stellen Sie sicher, dass die Datei in dem Sie arbeiten, den gleichen Weg in Ihrem Projekt wie die hat Namespace, den Sie verwenden. Sie erhalten,

.. wenn das nicht der Fall, bitte weitere Informationen über den Fehler liefern und

1

Der Namespace Sie Fall Ihrer Klasse verwenden, in diesem Fall sollten mywidget\grid\GridView.php oder stellen Sie Ihren Namespace zu Ihrem Speicherort der Datei übereinstimmen benutzt haben ist nicht registriert.

Die einfachste Lösung ist mit Yü den Namespace zu einem der registrierten sich ändern 2.

  • für Basic-Projekt es app ist - also, wenn Sie den Pfad zu Ihrer erweiterten Klasse ist mywidget/grid/GridView.php Namespace app\mywidget\grid
  • ist für Advanced Project ist es common, frontend oder backend so abhängig von der von Ihnen Platz Ordner dort wählen und ersetzen app entsprechend

Wenn Sie darauf bestehen, den Namensraum mywidget\grid zu verwenden, müssen Sie ihn zuerst registrieren. Lesen Sie mehr darüber in der Anleitung: Class Autoloading

+0

Ich ändere es in gemeinsame \ Widgets und ich legte den Namespace: Namespace common \ Widgets; und danach setze ich: common \ widgets \ grid \ GridView in meiner View-Datei verwenden. Aber derselbe Fehler – soussou

+1

Sie haben anderen Namespace als Sie angerufen haben. Es ist 'namespace common \ widgets;' und dann 'common \ widgets \ GridView;' ODER ** 'namespace common \ widgets \ grid;' und dann 'common \ widgets \ grid \ GridView;' verwenden (Klasse muss sein in einem zusätzlichen Ordner "Grid". – Bizley

+0

Thannnnks viel, endlich funktioniert es – soussou

Verwandte Themen