Freitextfelder - Wie/Wo?

Hallo, die Freitextfelder haben ja abgedient. Aber wie läuft es nun mit der neuen Art? Ich würde mir gerne davon ein Bild machen. Kann es aber nicht finden. Hat jmd einen Tipp?

Ich bin immer noch auf der Suche nach den Feldern bzw. der Funktion. Im Beta Guide steht ja was von der neuen Tabelle s_user_attributes Diese Tabelle hat aber nur 2 Felder, id und userID. Ich verstehe den Sinn hier nicht.

Hallo ottscho, die neuen Attribute Tabellen können über Plugins erweitert werden. Hierfür haben wir die Helper Funktion „Shopware()->Models()->addAttribute()“ zur Verfügung gestellt. Sobald ein Plugin installiert wird, werden die Shopware Models für die Attribute Tabellen neue generiert und unter Shopware\Models\Attribute\ abgelegt. Für weitere Details siehe bitte hier: http://wiki.shopware.de/Shopware-Models … weitern.3F Ich hoffe ich konnte dir weiter helfen. Mit freundlichen Grüßen Oliver Denter

Hallo Oliver, danke für die Info. So ganz verstehen tue ich es noch nicht. Aber da muss ich mich eben einlesen. Ich habe nun wie in dem Beispiel mal diese Feld hinzugefügt. Nun habe ich in der DB eine neue Spalte „swag_shoes_size“ Wie ich dies nun beim Artikel nutzen kann, ist mir noch unklar. Problem wo ich nun sehe, wie kann der normale Shopbetreiber zusätzliche Felder erstellen? In 3.5.6 konnte dies ja einfach über die Einstellungen mit attr20 gemacht werden.

Hi, sobald du in dem Plugin ein Feld zu einer Attribute Tabelle erzeugt hast werden ja die Models dafür neu generiert. Sprich du hast dann im Model Shopware\Models\Attribute\Customer nun das Property „swagShoeSize“. (Wichtig, die Sachen werden auf deinem Server generiert, daher musst du die Dateien erst runterladen wenn du nicht lokal arbeitest). Dieses Feld wird dann automatisch auf den Detailseiten mit ausgelesen (Einfach mal den Response von „localhost/backend/customer/detail“ => Beispiel lokal) anschauen. PhpSeitig könntest du dann wie folgt drauf zugreifen: $customerModel->getAttribute()->getSwagShoeSize(); Ps.: Alle bereits existierenden Freitextfelder sind bestehend geblieben und heißen in der Datenbank noch genauso. Wie zum Beispiel attr1-20 bei s_articlse_attribtues. Freitextfelder die direkt in den Haupttabellen angelegt waren (Beispiel s_categories) wurden nur in die s_categories_attributes verschoben, die Namen sind gleich geblieben

Die Attribute 1 - 20 stehen ja standardmäßig weiterhin zur Verfügung - neu ist halt die Möglichkeit eigene / unabhängige Attribute hinzuzfügen

ok, danke. Super :slight_smile: Ich habe nun zum Test mal wie beschrieben dieses Plugin installiert: class Shopware\_Plugins\_Backend\_SwagCustomerShoeSize\_Bootstrap extends Shopware\_Components\_Plugin\_Bootstrap { /\*\* \* Plugin install method \* \* @return bool success \*/ public function install() { Shopware()-\>Models()-\>addAttribute( 's\_user\_attributes', 'swag', 'shoe\_size', 'VARCHAR(10)', true, null ); return true; } public function init() { $this-\>registerCustomModels(); } } Allerdings auf s_articles_attributes In der DB war nach dem Installieren das neue Feld vorhanden. Aber nach mehrmaligem Cachelöschen kann ich in der Model Datei /public_html/engine/Shopware/Models/Attribute/Article.php keine Änderung finden. Diese Datei sollte sich ja automatisch erweitern…

Hi, folgendes Problem könnte existieren… damit die Models automatisch erzeugt werden können muss ein Vollzugriff auf den Model Ordner existieren. - Bitte deinstalliere einmal das Plugin… - Prüfe ob die Spalte auch wirklich aus der Datenbank entfernt wurde… => Sollte jedoch entfernt sein, wenn du in der Uninstall Funktion das “removeAttribtue” eingebaut hast. => Sollte die Spalte nicht aus der Datenbank entfernt worden sein, entferne Sie bitte manuel. - Setze danach einen Vollzugriff auf den Model Ordner - Installiere das Plugin erneut - Daraufhin sollte das Model erweitert sein. Hoffe das hilft Gruß Oliver

Hi Oliver, ich habe nach dem Deinstallieren das Feld manuell aus der DB Tabelle gelöscht. Ich konnte die korrekte uninstall Methode nicht finden. Das geht nicht: public function uninstall() { Shopware()-\>Models()-\>removeAttribute(); return true; } Habe dann die Verzeichnis- und Dateirechte auf 777 gesetzt und das Plugin erneut installiert. Ergebnis. Das Feld ist in der Tabelle, aber die Article.php bleibt unmodifiziert. P.S. Zur Info. Ich arbeite nicht mit uwamp, sonder mit einer Installation bei Hetzner.

Hi, ich habe gerade gesehen dass die Uninstall Funktion im Wiki Artikel zu den neuen Models fehlt. Wenn deine Install Funktion folgendermaßen aussieht: Shopware()-\>Models()-\>addAttribute('s\_user\_attributes', 'swag', 'shoe\_size', 'VARCHAR(10)', true, null); Muss die Uninstall Funktion folgendermaßen aussehen: Shopware()-\>Models()-\>removeAttribute('s\_user\_attributes', 'swag', 'shoe\_size'); Ich teste das ganze nochmal auf unseren System und melde mich in Kürze.

Hi, wir haben das ganze bei uns jetzt auf dem System nochmal getestet. Der Wiki Artikel wurde angepasst. In der Install und Uninstall Funktion muss am Ende noch folgender Source Code hinzugefügt werden. $this-\>Application()-\>Models()-\>generateAttributeModels( dirname($this-\>Application()-\>AppPath()) );

Danke für die Info. Aber irgendwie scheint es bei mir nicht zu gehen. Bin nur mal vom externen Server auf uwamp gewechselt. Fehler: File mapping drivers must have a valid directory path, however the given path [C:\uwamp_beta_4.0.0\uwamp\www\engine\Shopware\Plugins\Community\Backend\SwagCustomerShoeSize\Models/] seems to be incorrect! <?php class Shopware_Plugins_Backend_SwagCustomerShoeSize_Bootstrap extends Shopware_Components_Plugin_Bootstrap { public function install() { Shopware()->Models()-\>addAttribute( 's\_articles\_attributes', 'swag', 'shoe\_size', 'VARCHAR(10)', true, null ); $this-\>Application()-\>Models()-\>generateAttributeModels( dirname($this-\>Application()-\>AppPath()) ); return true; } public function init() { $this-\>registerCustomModels(); } public function uninstall() { Shopware()-\>Models()-\>removeAttribute('s\_articles\_attributes', 'swag', 'shoe\_size'); $this-\>Application()-\>Models()-\>generateAttributeModels( dirname($this-\>Application()-\>AppPath()) ); return true; } }

Da scheint ein Fehler im Pfad zu sein. C:\uwamp_beta_4.0.0\uwamp\www\engine\Shopware\Plugins\Community\Backend\SwagCustomerShoeSize\Models/ Das letzte Zeichen müsste ein Backslash sein und kein Slash. Das scheint jedoch nur auf den Uwamp packages fehlzuschlagen. Um dir da jetzt einen schnellen Fix zur Verfügung zu stellen, damit du ein wenig mit der Anpassbarkeit arbeiten kannst, würde ich den Pfad fest eintragen: $this->Application()->Models()->generateAttributeModels( „C:\uwamp_beta_4.0.0\uwamp\www\engine\Shopware\Plugins\Community\Backend\SwagCustomerShoeSize\Models“ ); Sollte dies zu einer Fehlermeldung führen prüfe bitte den Pfad der in der Fehlermeldung angezeigt wird auf doppelte Backslashes, da ich nicht genau weiß ob am Ende des Pfades für die Funktion ein Backslash angegeben werden muss oder nicht.

Also bei uwamp kam ich nicht weiter. Hier war am Ende des Pfads immer ein Slash. Ich habe mehrmals den Chache gelöscht, uwamp gestoptt etc. aber keine Änderung. Nun habe ich das Ganze auf beim Hoster getestet. Der Pfad scheint hier aber auch falsch zu sein: Fehler: File mapping drivers must have a valid directory path, however the given path [/usr/www/users/cartomam/engine/Shopware/Plugins/Community/Backend/SwagCustomerShoeSize/Models/] seems to be incorrect! Muss hier innerhalb des Plugin Ordners ein Ordner Models vorhanden sein? Oder was hat es mit dem Pfad auf sich? Ich dachte das die Article.php direkt modifiziert wird. /public_html/engine/Shopware/Models/Article

Also an die Funktion muss übergeben werden, wohin die Models erzeugt werden. Dies müsste “engine\Shopware\Models” sein. Beim mir gibt “dirname($this->Application()->AppPath())” “localhost\engine\Shopware\Models” zurück

Den Code habe ich ja gepostet. Da konnte ich keinen Fehler finden. Komisch ist ja, dass der Pfad anscheinend komplett falsch ist. Unter Windows (uwamp) so wie unter Linux.

Hi, ich habe mir gerade lokal das UWAMP Package installiert. Eine Ausgabe von „dirname($this->Application()->AppPath())“ liefert bei mir folgendes zurück: „C:\Users…\Desktop\uwamp_beta_4.0.0\uwamp\www\engine“ Wenn ich die Plugin Install Funktion durchlaufen lasse wird bei mir Lokal das Model auch um das Feld erweitert. Mein Lösungsvorschlag: 1. Lasse dir in der Plugin Install Funktion (Alles andere auskommentieren) die Rückgabe von „dirname($this->Application()->AppPath())“ wieder geben. 2. Sollte diese Funktion nicht „C:\Users…\Desktop\uwamp_beta_4.0.0\uwamp\www\engine“ wieder geben, nimm die Source Code Zeile raus und schreib den Pfad fest rein. Danach sollte alles funktionieren. Die Umständlichkeiten zur Model Anpassbarkeit tun mir Leid, aber ich hoffe ich konnte dir bei dem Problem weiter helfen und die Models können nun sauber auf deinem System generiert werden :wink: Mit freundlichen Grüßen Oliver Denter

Hi Oliver, ich gebe erst mal auf… Ich habe nun den Pfad direkt in der Datei angeben. Fehler bleibt erhalten. <?php class Shopware_Plugins_Backend_SwagCustomerShoeSize_Bootstrap extends Shopware_Components_Plugin_Bootstrap { public function install() { Shopware()->Models()-\>addAttribute( 's\_articles\_attributes', 'swag', 'shoe\_size', 'VARCHAR(10)', true, null ); $this-\>Application()-\>Models()-\>generateAttributeModels( dirname('/usr/www/users/cartomam/engine') ); return true; } public function init() { $this-\>registerCustomModels(); } public function uninstall() { Shopware()-\>Models()-\>removeAttribute('s\_articles\_attributes', 'swag', 'shoe\_size'); $this-\>Application()-\>Models()-\>generateAttributeModels( dirname('/usr/www/users/cartomam/engine') ); return true; } } Fehler: File mapping drivers must have a valid directory path, however the given path [/usr/www/users/cartomam/engine/Shopware/Plugins/Community/Backend/SwagCustomerShoeSize/Models/] seems to be incorrect! P.S. Ichinstalliere über den “alte” PluginManager

[quote=“Stefan Hamann”]Die Attribute 1 - 20 stehen ja standardmäßig weiterhin zur Verfügung - neu ist halt die Möglichkeit eigene / unabhängige Attribute hinzuzfügen[/quote] Bedeutet das, man kann auch als Shopbetreiber ohne Programmierkenntnisse mehr als die 20 attr-Felder verwenden? Wenn ja, können z.B. das Plugin “Produktexporte” oder auch der “Import/Export” auf diese neuen Attribute zugreifen?