Funktion nach Update nicht mehr gefunden

Hallo,

ich versuche mich grade am update von CE 4.6.5 auf 4.7.3
dabei habe ich mich entschieden auch das Template stück für stück von Basic nach Azure zu kopieren.

Nun hänge ich seit 2 tagen daran das eine Funktion nicht gefunden wird. Ich möchte meine Attribute als Kategorien anzeigen lassen. Die Funktion getAttributes() wird mit einem Modul erweitert. Das tut aber nichts zur Sache weil auch die Originalfunktion aus der Datei application\models\oxcategory.php (zeile 699) bei deaktiviertem Modul nicht gefunden wird.

template

[{assign var="allAtrributes" value=$oView->getAttributes() }]

exception_log


oxSystemComponentException-oxException (time: 2013-02-28 14:10:55): [0]: Function 'getAttributes' does not exist or is not accessible! (oxwCategoryTree)
 
 Stack Trace: #0 C:\Zend\Apache2\htdocs\oxid473	mp\smarty\7bae39355438cef78182c8593e788ac5^%%8C^8C6^8C6E8DDC%%categorytree.tpl.php(54): oxSuperCfg->__call('getAttributes', Array)
#1 C:\Zend\Apache2\htdocs\oxid473	mp\smarty\7bae39355438cef78182c8593e788ac5^%%8C^8C6^8C6E8DDC%%categorytree.tpl.php(54): oxwCategoryTree->getAttributes()
#2 C:\Zend\Apache2\htdocs\oxid473\core\smarty\Smarty.class.php(1263): include('C:\Zend\Apache2...')
#3 C:\Zend\Apache2\htdocso\oxid473\core\oxshopcontrol.php(528): Smarty->fetch('widget/sidebar/...', 'ox|0|0|0|0')
#4 C:\Zend\Apache2\htdocs\oxid473\core\oxshopcontrol.php(396): oxShopControl->_render(Object(oxwCategoryTree))
#5 C:\Zend\Apache2\htdocs\oxid473\core\oxshopcontrol.php(156): oxShopControl->_process('oxwcategorytree', NULL, Array, NULL)
#6 C:\Zend\Apache2\htdocs\oxid473\core\oxwidgetcontrol.php(75): oxShopControl->start('oxwcategorytree', NULL, Array, NULL)
#7 C:\Zend\Apache2\htdocs\oxid473\core\smarty\plugins\function.oxid_include_widget.php(57): oxWidgetControl->start('oxwcategorytree', NULL, Array, NULL)
#8 C:\Zend\Apache2\htdocs\oxid473	mp\smarty\7bae39355438cef78182c8593e788ac5^%%F5^F5E^F5EE4DF7%%sidebar.tpl.php(25): smarty_function_oxid_include_widget(Array, Object(Smarty))
#9 C:\Zend\Apache2\htdocs\oxid473\core\smarty\Smarty.class.php(1869): include('C:\Zend\Apache2...')
#10 C:\Zend\Apache2\htdocs\oxid473	mp\smarty\7bae39355438cef78182c8593e788ac5^%%36^366^366ECF91%%page.tpl.php(23): Smarty->_smarty_include(Array)
#11 C:\Zend\Apache2\htdocs\oxid473\core\smarty\Smarty.class.php(1869): include('C:\Zend\Apache2...')
#12 C:\Zend\Apache2\htdocs\oxid473	mp\smarty\7bae39355438cef78182c8593e788ac5^%%F0^F0F^F0F92504%%list.tpl.php(202): Smarty->_smarty_include(Array)
#13 C:\Zend\Apache2\htdocs\oxid473\core\smarty\Smarty.class.php(1263): include('C:\Zend\Apache2...')
#14 C:\Zend\Apache2\htdocs\oxid473\core\oxshopcontrol.php(528): Smarty->fetch('page/list/list....', '1777fd613fd1094...')
#15 C:\Zend\Apache2\htdocs\oxid473\core\oxshopcontrol.php(396): oxShopControl->_render(Object(extendedAList))
#16 C:\Zend\Apache2\htdocs\oxid473\core\oxshopcontrol.php(156): oxShopControl->_process('alist', NULL, NULL, NULL)
#17 C:\Zend\Apache2\htdocs\oxid473\core\oxid.php(40): oxShopControl->start()
#18 C:\Zend\Apache2\htdocs\oxid473\index.php(28): Oxid::run()
#19 C:\Zend\Apache2\htdocs\oxid473\oxseo.php(46): require('C:\Zend\Apache2...')
#20 {main}

 Faulty component --> 

hat jemand eine Idee woran das liegen könnte?

Im Widget ist oView der Widget-Controller:

[{assign var="oConf" value=$oViewConf->getConfig()}]
[{assign var="topView" value=$oConf->getTopActiveView()}]
[{$topView->getAttributes()}]

Allerdings gibt es die Methode getAttributes nur in alist und details, und die 2 sind nicht identisch, so dass es sowieso besser wäre den widget controller mit einer eigenen Methode zu überladen.

Guten Morgen,

vielen Dank für die Antwort.

[QUOTE=leofonic;117637]Im Widget ist oView der Widget-Controller:

Allerdings gibt es die Methode getAttributes nur in alist und details, und die 2 sind nicht identisch, so dass es sowieso besser wäre den widget controller mit einer eigenen Methode zu überladen.[/QUOTE]

Das verstehe ich nicht so ganz. Wie genau soll ich das anstellen?

Wenn ich deinen Code einfüge bekomme ich keine fehlermeldung mehr, allerdings bei [{$topView->getAttributes()}] auch keine ausgabe.

Wenn ich dann mein eigenes Modul aktiviere gibts die fehlermeldung: Function ‘setClassName’ does not exist or is not accessible! (extendedCategory)

Diese Funktion rufe ich aber nirgendswo auf. Bisher wird die Klasse oxCategory erweitert:

class extendedCategory extends oxCategory {
    /**
     * Loads and returns attribute list associated with this category
     *
     * @return array
     */
    public function getAttributes()
        
      .......................

        return $aAttributes;
    }
}

Muss ich da auch noch etwas anpassen? Mir ist das mit den Widgets jetzt irgendwie suspekt. Vorher war das ganz simpel in der _left.tpl eingebunden und jetzt wird alles verkompliziert.

Wenn ich deinen Code einfüge bekomme ich keine fehlermeldung mehr, allerdings bei [{$topView->getAttributes()}] auch keine ausgabe.

Ja da ist keine Ausgabe, sollte nur zum testen sein ob der Funktionsaufruf funktioniert. Wenn du oxcategory erweiterst mit der Methode getAttributes, dann musst du auch im Template ein Kategorie-Objekt verwenden und nicht den Controller. $oView ist der Controller der Seite, also z.B. “alist”. $oView wechselt innerhalb des widgets zum widget-Controller, also z.B. “oxwCategoryTree”, damit das Widget unabhängig von der jeweiligen Seite funktioniert.
Einige Methoden des Controllers liefern dem Template Objekte, z.B. Kategorien (Klasse oxcategory). Mit diesen Objekten kannst du die Methoden der Objekt-Klasse aufrufen, bei dir müsste es also z.B,

 [{$oCat->getAttributes()}] 

heißen, wenn das Kategorieobjekt “oCat” heißt.