# Erweiterung Plugin durch Plugin (Extjs): TypeError: Cannot read property '$isClass' of null

**URL:** https://forum.shopware.com/t/erweiterung-plugin-durch-plugin-extjs-typeerror-cannot-read-property-isclass-of-null/58388
**Category:** Programmierung
**Created:** [5. März 2019 um 08:20 UTC](https://forum.shopware.com/t/erweiterung-plugin-durch-plugin-extjs-typeerror-cannot-read-property-isclass-of-null/58388 "2019-03-05T08:20:25Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![\_MikeB](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/_mikeb/32/7856_2.png) [@\_MikeB](https://forum.shopware.com/u/_MikeB)
#### Post date: [5. März 2019 um 08:20 UTC](https://forum.shopware.com/t/erweiterung-plugin-durch-plugin-extjs-typeerror-cannot-read-property-isclass-of-null/58388/1 "2019-03-05T08:20:25Z")

</div>

Hallo.

Ich versuche gerade ein Addon für ein gekauftes Plugin zu schreiben. Das funktioniert soweit auch ganz gut jedoch erhalten ich den Fehler “TypeError: Cannot read property ‘$isClass’ of null” sobald ich probiert die ExtJs Klasse des Plugin mit override zu überschreiben. Anscheinend ist die zu überschreibende Klasse noch nicht vollständig instanziiert. In den Developer Tools sehe ich das meine Addon Klasse nach der zu überschreibenden Klasse eingebunden wird. Wieso klappt also der override nicht? Was mache ich falsch?

BACKEND SUBSCRIBER

```
// event
'Enlight_Controller_Action_PostDispatchSecure_Backend_Article' => array('onArticlePostDispatch', 110),

// erweiterung backend js
if ($arguments->get('request')->getActionName() === 'load') {
	$view->extendsTemplate('backend/master_plugin/addon/view/detail/window.js');
}

```

DEFINITION IM GEKAUFTEN PLUGIN

```
//{block name="backend/article/view/detail/window"}
// {$smarty.block.parent}
Ext.define('Shopware.apps.MasterPlugin.view.detail.Window', {
    override: 'Shopware.apps.Article.view.detail.Window',

```

DEFINITION IM ADDON FÜR DAS GEKAUFTE PLUGIN

```
//{block name="backend/article/view/detail/window"}
//{$smarty.block.parent}
Ext.define('Shopware.apps.MasterPlugin.Addon.view.detail.Window', {
    override: 'Shopware.apps.MasterPlugin.view.detail.Window',

```

FEHLER STACKTRACE

```
TypeError: Cannot read property '$isClass' of null
    at Object.override (https://shopurl/engine/Library/ExtJs/ext-all.js?201902250948:21:1642)
    at Object.classReady (https://shopurl/backend/base?file=bootstrap&loggedIn=1551772882:3272:5)
    at Object.onCreated (https://shopurl/engine/Library/ExtJs/ext-all.js?201902250948:21:47632)
    at Object.Manager.createOverride (https://shopurl/backend/base?file=bootstrap&loggedIn=1551772882:3283:4)
    at Object.define (https://shopurl/engine/Library/ExtJs/ext-all.js?201902250948:21:53280)
    at eval (/backend/Article/load/?f=m/Batch|m/PriceGroup|m/PropertyGroup|m/PropertyOption|m/Template|m/Category|m/Media|m/SeoCategory|m/Unit|m/Similar|m/Accessory|m/Article|m/Price|m/Detail|m/Link|m/Download|m/Esd|m/EsdFile|m/Statistic|m/Serial|m/Configurator|m/ConfiguratorGroup|m/ConfiguratorSet|m/ConfiguratorOption|m/ConfiguratorTemplate|m/Dependency|m/PriceVariation|m/Field|m/Stream|m/MediaMapping|m/MediaMappingRule|m/Property|v/detail/Toolbar|v/detail/Window|v/detail/Settings|v/detail/Properties|v/detail/Prices|v/detail/Base|v/category/Tree|v/category/Seo|v/category/List|v/category/DropZone|v/image/List|v/image/Info|v/image/DropZone|v/image/DataView|v/image/Mapping|v/image/NewRule|v/image/Progress|v/variant/List|v/variant/Configurator|v/variant/Detail|v/variant/NumberProgress|v/variant/Progress|v/variant/ImageRelationProcess|v/variant/configurator/Dependency|v/variant/configurator/Sets|v/variant/configurator/GroupEdit|v/variant/configurator/OptionEdit|v/variant/configurator/Mapping|v/variant/configurator/Template|v/variant/configurator/PriceVariation|v/variant/configurator/PriceVariationRule|v/esd/List|v/esd/Detail|v/esd/Serials|v/statistics/List|v/statistics/Chart|v/crossselling/Tab|v/crossselling/Base|v/crossselling/ProductStreams|v/resources/Links|v/resources/Downloads|store/Batch|store/Detail|store/CategoryPath|store/CategoryTree|store/Variant|store/Group|store/Option|store/Esd|store/EsdFile|store/Statistic|store/Serial|store/Variation|store/Dependency|store/ConfiguratorSet|store/MediaMapping|store/Property|c/Main|c/Detail|c/Category|c/Media|c/Variant|c/PriceVariation|c/Esd|c/Statistic|c/Crossselling&no-cache=1551772882+1+1:1598:5)
    at https://shopurl/engine/Library/ExtJs/ext-all.js?201902250948:21:5356
    at Object.Ext.globalEval (https://shopurl/engine/Library/ExtJs/ext-all.js?201902250948:21:5369)
    at Object.success (https://shopurl/backend/base?file=bootstrap&loggedIn=1551772882:3600:5)
    at Object.callback (https://shopurl/engine/Library/ExtJs/ext-all.js?201902250948:21:67496)

```

&nbsp;

---

<div class="post-metadata">

### Author: ![shyim](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/shyim/32/7681_2.png) [@shyim](https://forum.shopware.com/u/shyim)
#### Post date: [5. März 2019 um 20:14 UTC](https://forum.shopware.com/t/erweiterung-plugin-durch-plugin-extjs-typeerror-cannot-read-property-isclass-of-null/58388/2 "2019-03-05T20:14:14Z")

</div>

ist dein Override im javascript auch nach dem gekauften Plugin?

---

<div class="post-metadata">

### Author: ![\_MikeB](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/_mikeb/32/7856_2.png) [@\_MikeB](https://forum.shopware.com/u/_MikeB)
#### Post date: [6. März 2019 um 09:34 UTC](https://forum.shopware.com/t/erweiterung-plugin-durch-plugin-extjs-typeerror-cannot-read-property-isclass-of-null/58388/3 "2019-03-06T09:34:38Z")

</div>

Hi Shyim.

Ja das kommt nach dem gekauften. Zumindest sehe ich das so in den Developer Tools. In den Subscribern ist die Ladereihenfolge auch korrekt festgelegt:

Gekauftes Plugin  
‘Enlight\_Controller\_Action\_PostDispatchSecure\_Backend\_Article’ =\> array(‘onArticlePostDispatch’, 100),

Addon für das Plugin  
‘Enlight\_Controller\_Action\_PostDispatchSecure\_Backend\_Article’ =\> array(‘onArticlePostDispatch’, 110),

---

<div class="post-metadata">

### Author: ![MrMDeluxe](https://avatars.discourse-cdn.com/v4/letter/m/4da419/32.png) [@MrMDeluxe](https://forum.shopware.com/u/MrMDeluxe)
#### Post date: [8. März 2019 um 10:31 UTC](https://forum.shopware.com/t/erweiterung-plugin-durch-plugin-extjs-typeerror-cannot-read-property-isclass-of-null/58388/4 "2019-03-08T10:31:08Z")

</div>

Hallo Mike,

Dein override funktioniert so nicht, da du die Klasse des gekauften Plugins&nbsp;  
(‚Shopware.apps.MasterPlugin.view.detail.Window‘) versuchst zu überschreiben.

Beim Override spielt der Klassenname, in welcher der override gesetzt wird, absolut keine Rolle.  
Nur die Klasse die überschrieben werden soll ist hier wichtig.

In Deinem Fall existiert zur Laufzeit&nbsp;keine Klasse ‚Shopware.apps.MasterPlugin.view.detail.Window‘.

Daher dann der „$isClass’ of null“ Fehler.

Das gekaufte Plugin könnte z.B auch so definiert worden sein:

```
//{block name="backend/article/view/detail/window"}
// {$smarty.block.parent}
Ext.define('Shopware.apps.DieserKlassenNameKannNichtOverridedWerden.view.detail.Window', {
    override: 'Shopware.apps.Article.view.detail.Window',

```

Sprich, um das Verhalten des gekauften Plugins zu ändern,  
musst Du Dich auf den selben override beziehen:

```
//{block name="backend/article/view/detail/window"}
//{$smarty.block.parent}
Ext.define('Shopware.apps.MasterPlugin.Addon.view.detail.Window', {
    override: 'Shopware.apps.Article.view.detail.Window',

```

Wenn Dein Addon Plugin nach dem gekauften eingebunden wird, kannst Du  
mit callParent(arguments) an den Rückgabewert (falls die Funktion einen hat) inkl. der Änderung des gekauften Plugins kommen  
und diesen Wert dann manipulieren.

Es kommt halt darauf an, was Du genau vor hast.  
Hoffe das hilft Dir schonmal weiter.

---

<div class="post-metadata">

### Author: ![\_MikeB](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/_mikeb/32/7856_2.png) [@\_MikeB](https://forum.shopware.com/u/_MikeB)
#### Post date: [8. März 2019 um 10:44 UTC](https://forum.shopware.com/t/erweiterung-plugin-durch-plugin-extjs-typeerror-cannot-read-property-isclass-of-null/58388/5 "2019-03-08T10:44:36Z")

</div>

Hi MrMDeluxe.

Danke für Dein Feedback. Ich dachte vorher instanziierte Klassen können wieder überschrieben werden. So wie in deinem Beispiel habe ich es auch schon probiert und so funktioniert es „eigentlich“ auch. Im Masterplugin wird allerdings dem Artikelfenster ein neuer Tab hinzugefügt und dieser wurde dann gedoppelt. Ich habe aber erst jetzt bemerkt das ich diesen Code nicht zwangsläufig benötigen. So sollte ich denke ich es jetzt hinbekommen. Danke nochmal für deine Antwort und die Erleuchtung zum Thema override.

Gruß Mike
