Beispiel-Backendplugin SwagProduct - Erweiterung geht schief

Hallo, ich schaue mir gerade die Backendentwicklung an. Ich hangele mich mittels http://wiki.shopware.com/Shopware-Backe … 2_871.html an SwagProduct entlang. Das heruntergeladene Plugin funktioniert bei mir im Testshop wie erwartet. Wenn ich aber zusätzlich z.B. die Spalte notifications aus s_articles ausgeben will komme ich leider seit einigen Stunden keinen Schritt weiter. Ich habe Models/Product/Product.php um die notification-Variable + get + set erweitert. Trotzdem wird bei der Installation die Tabelle s_product ohne notification-Spalte angelegt. Muss ich noch etwas anderes dafür anfassen? Komplettes Model unter http://pastebin.com/6WgwjwCZ Aus lauter „Verzweiflung“ habe ich testhalber die createDate-Definition entfernt. Danach kann ich das Plugin nicht mehr installieren, Fehlermeldung: „Unable to install, got exception: Property Shopware\CustomModels\Product\Product::$createDate does not exist“ - grep meint, das kein createDate mehr im ganzen Plugin-Verzeichnis vorkommt. Woher nimmt Shopware es dann? Gibt es noch eine Beziehung die ich übersehen habe? Gruß Mario

Ein Hoch auf xdebug und nieder mit dem Cache! :wink: Mittels des Debuggers habe ich herausgefunden, das der Cache das Model scheinbar noch vorgehalten hat. Nach Deaktivierung des Caches im Backend hat es jetzt problemlos funktioniert. Wie unter http://wiki.shopware.com/Shopware-Backe … ml#Vorwort angegeben sollte man bei der Backend-Entwicklung in der config.php den Cache deaktivieren. Die config.php sollte dann so aussehen (Datenbankdaten natürlich anpassen): <?php return array ( 'db' => array ( 'host' =\> '192.168.2.106', 'port' =\> '3306', 'username' =\> 'shopware', 'password' =\> 'xxx', 'dbname' =\> 'shopware', ), 'front' =\> array ( 'noErrorHandler' =\> true, 'throwExceptions' =\> true ), 'template' =\> array ( 'forceCompile' =\> true ), 'model' =\> array( 'cacheProvider' =\> 'Array' ), 'cache' =\> array( 'backend' =\> 'Black-Hole', 'backendOptions' =\> array(), 'frontendOptions' =\> array('write\_control' =\> false), ), ); Und da es einiges an Zeit gekostet hat, die Lösung wie man eine weitere Spalte, hier notifications, ausgibt gleich mit anbei: In der Bootstrap.php muss in der Methode addDemoData der SQL-Query zweimal um notfication erweitert werden: $sql = " INSERT IGNORE INTO s\_product (id, name, active, description, descriptionLong, lastStock, createDate, notification) SELECT a.id, a.name, a.active, a.description, a.description\_long as descriptionLong, a.laststock as lastStock, a.datum as createDate, a.notification FROM s\_articles a "; In Models/Product/Product.php muss die Variable gesetzt und die get- und set-Methoden hinzugefügt werden: /\*\* \* @var integer $notification \* \* @ORM\Column(type="integer", nullable=false) \*/ private $notification = false; /\*\* \* @param int $notification \*/ public function setNotification($notification) { $this-\>notification = $notification; } /\*\* \* @return int \*/ public function getNotification() { return $this-\>notification; } Als letztes noch in Views/backend/swag_product/model/product.js die neue Spalte ergänzen: fields: [{ name : 'id', type: 'int', useNull: true }, { name : 'name', type: 'string' }, { name : 'active', type: 'boolean' }, { name : 'createDate', type: 'date' }, { name : 'description', type: 'string', useNull: true }, { name : 'descriptionLong', type: 'string', useNull: true }, { name : 'lastStock', type: 'boolean' }, { name : 'notification', type: 'integer' }] Danach das Plugin installieren und aktivieren. Das sollte es gewesen sein. Gruß Mario