Eigene Klassen in oxid 6 metadata2

Hi, weiß jemand wie man eigene Model Klassen in ein Modul integriert

z. b.: Klasse mit eigener Tabelle (im speziellen Fall Kataloge). bei version 4.x habe ich einfach die Klasse im entsprechenden Modul angelegt und in der metadata bekannt gegeben
metadata 1.0 : ‘oxkatalog’ => ‘xxxx/kataloge/application/models/oxkatalog’

wie funktioniert das jetzt mit metadata 2.0 ???

steht direkt im ersten Absatz der metadata 2.0 Dokumentation
https://docs.oxid-esales.com/developer/en/6.0/modules/skeleton/metadataphp/version20.html

Da habe ich jetzt aber wieder das Probliem im admin Bereich, namespace ist bekanntgegeben (composer.json, etc). Aber oxkatalog ist ja in meinem Fall ein Model,

protected $_sListClass = ‘oxkatalog’;

endet in einem classnotfound in KatalogList (gleich aufgebaut wie UserGroupList).
Heisst das dass man keine eigenen Models mehr ohne massive Eingiffe verwenden kann?

Doch, du musst aber den Namespace mit angeben:

protected $_sListClass = ‘\Vendor\Namespace\Class’;

Schau dir am Besten mal das PayPal Modul an was OXID mit ausliefert, da kann man ne Menge “abschauen” :wink:

Hall. Gibt es für die $_sListClass ein Beispiel?

du sollest weggegen von oxkatalog alles was mit ox beginnt gehört oxid

Beispiel:

namespace dgModule\dgCatalogModul\Application\Controller\Admin;

use dgModule\dgCatalogModul\Application\Model\dgCatalog as dgCatalog;

class dgCatalog_List extends \OxidEsales\Eshop\Application\Controller\Admin\AdminListController
{
protected $_sListClass = dgCatalog::class;

protected $_sThisTemplate = 'dgcatalog/dgcatalog_list.tpl';

protected $_sDefSortField = 'oxtitle';

public function render()
{
	parent::render();
    
	return $this->_sThisTemplate;
}

}

Danke. Was ist denn in dgCatalog drinne?

ich hatte geschrieben du sollst ox vermeiden, statt ox habe ich einfach dg genutzt.
du wolltest einfach ein Beispiel.

1 Like

Darüber rufst mit der Klasse die Liste aus der Tabelle ab, die Du in contruct(…); angibst:

protected $_sListClass = ‘dgCatalog’;

public function __construct()
{
parent::__construct();
$this->init( ‘deine_tabelle’);
}