Hallo, ich habe versucht, ein Attribut zu den Shopinhalten hinzu zu fügen. Dies habe ich auf die gleiche Art getan, wie in diesem Tutorial beschrieben: http://wiki.shopware.de/Schuhgroessen-E … _1052.html Gleiches habe ich ebenfalls bei Kategorien gemacht (dort funktioniert es einwandfrei), doch bei den Shopinhalten funktioniert dies nicht. Ich gehe hier mal meine Bootstrap durch und lasse manche teile wie Funktionsaufrufe von “createAttributes”, “registerEvent”, usw. weg. // Site Backend Event $this-\>subscribeEvent('Enlight\_Controller\_Action\_PostDispatch\_Backend\_Site', 'onSitePostDispatch'); // Generate Attribute $this-\>Application()-\>Models()-\>addAttribute( 's\_cms\_static\_attributes', 'plugin', 'cms\_description', 'TEXT', true, null ); // Generate Attributemodel Shopware()-\>Models()-\>generateAttributeModels(array( 's\_cms\_static\_attributes' )); // Eventlistener public function onSitePostDispatch(Enlight\_Event\_EventArgs $args) { /\*\*@var $view Enlight\_View\_Default\*/ $view = $args-\>getSubject()-\>View(); // Add template directory $args-\>getSubject()-\>View()-\>addTemplateDir( $this-\>Path() . 'Views/' ); if ($args-\>getRequest()-\>getActionName() === 'load') { $view-\>extendsTemplate('backend/site/model/site\_preferences/attribute.js'); $view-\>extendsTemplate('backend/site/view/site/form\_app.js'); } if ($args-\>getRequest()-\>getActionName() === 'index') { $view-\>extendsTemplate('backend/site/site\_preferences\_app.js'); } }
Teilweise funktioniert dies auch, denn im Backend wird unter Shopinhalte meine Box angezeigt, die ich in “backend/site/view/site/form_app.js” eingetragen habe: // Ausschnitt aus getItems Funktion: { xtype: 'fieldset', title: '{s name=formDetailFormEditDescriptionCaption}Navigations Beschreibung{/s}', items: [{ fieldLabel: '{s name=formDescriptionFieldHtmlEditorLabel}Beschreibungstext{/s}', xtype: 'tinymce', anchor:'100%', name : 'attribute[pluginCmsDescription]', height: 100 } ] },
Geladen wird dies über meine "site_preferences_app.js: //{block name="backend/site/app" append} //{include file="backend/site/view/site/form\_app.js"} //{/block}
Und im attribute.js Model habe ich das Field ebenfalls eingetragen: //{block name="backend/site/model/attribute/fields" append} { name : 'pluginCmsDescription', type: 'string', useNull:true, defaultValue: null }, //{/block}
Nun habe ich aber das Problem, dass ich keinerlei Attribute erhalte (werden nicht einmal im Ajax-Response ausgegeben) im Backend und kann diese auch nicht speichern. Vielleicht habe ich hier einen Fehler gemacht und jemand könnte mir helfen, diesen aufzudecken? Vielen Dank und grüße Andreas
Kleiner Nachtrag: im Cache habe ich die Datei cache/doctrine/attributes/Site.php gefunden. Dort wird auch mein Attribut korrekt eingefügt: /\*\* \* @var string $pluginCmsDescription \* \* @ORM\Column(name="plugin\_cms\_description", type="text", nullable=true) \*/ protected $pluginCmsDescription;
Getter und Setter werden auch korrekt erstellt. Ich habe nun auch zu Testzwecken im engine/Shopware/Controller/Backend/Site.php in die Funktion saveSiteAction() einen var_dump eingefügt mit $params (var_dump($params);die;) Aber selbst hier taucht mein Attribut nicht auf, auch wenn es innerhalb des Formulars liegt: <textarea id="tinymcefield-1309-inputEl" name="attribute[pluginCmsDescription]" rows="4" cols="20" class="x-form-field x-form-text x-hidden" style="width: 100%; height: 100px; display: none;" autocomplete="off" aria-invalid="false" tabindex="-1" data-errorqtip="" aria-hidden="true"></textarea>
Ich habe auch getestet ob Inhalt im Textfeld ist, wenn ich etwas in den TinyMCE Editor eingebe und funktioniert einwandfrei.
Kann es sein, dass die Attribute bei den Shopinhalten überhaupt nicht funktionieren? Innerhalb der Datei „templates/_default/backend/site/app.js“ wird nicht einmal das „Attribute“ Model eingebunden. Selbst wenn ich es einbinde, erhalte ich kein Attribut-Objekt beim speichern, aber es ändert etwas beim laden der Daten. Mich wundert es nur, dass das gleiche, was ich bei den Shopinhalten gemacht habe, bei den Kategorien wunderbar funktioniert.
Hat sowas schon mal jemand gemacht und kann mir weiter helfen? Übersehe ich vielleicht etwas?
Hallo, gab es diesbezüglich mittlerweile eine Lösung? Ich habe derzeit dasselbe Problem. Mir scheint hier stimmt irgendetwas mit dem Site Model und dem Proxie nicht. Obwohl alle Werte korrekt ankommen, scheitert das ganze dann bei Backend/Site.php:412 Diese Problem tritt aber erst seit Shopware 4.3.1 auf. In den vorherigen Versionen lassen sich die Site-Attribute Problemlos erweitern und speichern.