ManyToOne Association's Problem Backendplugin

Ich habe ein Problem mit einem Backend-Plugin. Grob gesagt Besitz es zwei MODELS und dann für jedes Model einen eigenen Backendcontroller. Nun will ich, dass eine mit dem anderen Model verknüpfen. Aber leider erscheint immer nur die ID und es wird nicht automatisch ein SelectionSearchfield erzeugt so wie in dem Beispiel mit dem Steuersatz (taxId -> tax) und dem Produkt Siehe hier Model 1: Flippingbook /\*\* \* @var integer $flippingbookcategoryId \* \* @ORM\Column(name="flippingbookcategory\_id", type="integer") \*/ private $flippingbookcategoryId = null; /\*\* \* @var \* @ORM\ManyToOne( \* targetEntity="Shopware\CustomModels\BonoFlippingbook\Flippingbookcategory", \* inversedBy="flippingbooks" \* ) \* @ORM\JoinColumn(name="flippingbookcategory\_id", referencedColumnName="id") \*/ protected $flippingbookcategory; /\*\* \* @return \Shopware\CustomModels\BonoFlippingbook\Flippingbookcategory \*/ public function getFlippingbookcategory() { return $this-\>flippingbookcategory; } /\*\* \* @param \Shopware\CustomModels\BonoFlippingbook\Flippingbookcategory $flippingbookcategory \*/ public function setFlippingbookcategory($flippingbookcategory) { $this-\>flippingbookcategory=$flippingbookcategory; } Der einsprechende Teil im Model 2: Flippingbookcategory /\*\* \* @var \Shopware\CustomModels\BonoFlippingbook\Flippingbook[] \* \* @ORM\OneToMany( \* targetEntity="Shopware\CustomModels\BonoFlippingbook\Flippingbook", \* mappedBy="flippingbookcategory" \* ) \*/ protected $flippingbooks; public function \_\_construct() { $this-\>flippingbooks = new ArrayCollection(); } /\*\* \* @return \Shopware\CustomModels\BonoFlippingbook\Flippingbook[] \*/ public function getFlippingbooks() { return $this-\>flippingbooks; } /\*\* \* @param \Shopware\CustomModels\BonoFlippingbook\Flippingbook[] $flippingbooks \* @return \Shopware\Components\Model\ModelEntity \*/ public function setFlippingbooks($flippingbooks) { return $this-\>setOneToMany( $flippingbooks, 'Shopware\CustomModels\BonoFlippingbook\Flippingbook', 'flippingbooks', 'flippingbookcategory' ); } ExtJS Model 1: Ext.define('Shopware.apps.BonoFlippingbook.model.Flippingbook', { extend: 'Shopware.data.Model', configure: function() { return { controller: 'BonoFlippingbook', detail: 'Shopware.apps.BonoFlippingbook.view.detail.Flippingbook' } }, fields: [//{block name="backend/bono\_flippingbook/model/flippingbook/fields"}{/block} { name:'id', type:'int', useNull: true }, { name:'name', type:'string' }, ... { name:'flippingbookcategoryId', type:'integer'}], associations: [{ relation:'ManyToOne', field:'flippingbookcategoryId', type:'hasMany', model:'Shopware.apps.BonoFlippingbook.model.Flippingbookcategory', name:'getFlippingbookcategory', associationKey:'flippingbookcategory' }] }); Ext.define('Shopware.apps.BonoFlippingbookcategory.model.Flippingbookcategory', { extend: 'Shopware.data.Model', configure: function() { return { controller: 'BonoFlippingbookcategory', detail: 'Shopware.apps.BonoFlippingbookcategory.view.detail.Flippingbookcategory' } }, fields: [//{block name="backend/bono\_flippingbookcategory/model/flippingbookcategory/fields"}{/block} { name:'id', type:'int', useNull: true }, { name:'active', type:'boolean', defaultValue: true }, { name:'name', type:'string' }, { name:'title', type:'string' }, { name:'metaTitle', type:'string', useNull: true }, { name:'description', type:'string', useNull: true }, { name:'descriptionLong', type:'string', useNull: true }, { name:'keywords', type:'string', useNull: true }, { name:'sorting', type:'int' }], associations: [{ relation: 'OneToMany', storeClass: 'Shopware.apps.BonoFlippingbook.model.Flippingbook', loadOnDemand: true, type: 'hasMany', model: 'Shopware.apps.BonoFlippingbook.model.Flippingbook', name: 'getFlippingbooks', associationKey: 'flippingbooks' }] }); im Controller hab ich noch folgende Funktion: protected function getListQuery() { $builder = parent::getListQuery(); $builder-\>leftJoin('flippingbook.flippingbookcategory', 'flippingbookcategory') -\>addSelect(array('flippingbookcategory')); return $builder; } Wenn ich den Controller für das Listig nun direkt anspreche schaut auch soweit alles gut aus: { "success":true, "data":[{ "id":1, "name":"14P04", "flippingbookcategoryId":4, "flippingbookcategory":{ "id":4, "name":"Prospekt", "sorting":300 } }], "total":1 } Kann mir da irgendwer helfen wo der Fehler liegt? Wieso bekomme ich nicht so ein Selection Auswahl angezeigt wie bei dem tax-Beispiel?

Hat niemand einen Anhaltspunkt wo der Fehler liegt? :frowning:

Ich weiß nicht ob das Problem noch aktuell ist.
Bei mir lag es daran, dass eines der Models nicht in der app.js eingetragen war.
Anhand des Beispiels oben müsste in der app.js also folgendes eingebaut sein:

models: [‚Flippingbook‘, ‚Flippingbookcategory‘],

Moin,

ich muß das Thema nochmal aufgreifen. Ist zwar schon mehr als 8 Monate alt, aber ich stehe derzeit vor exakt dem selben Problem.

Kann es sein, dass man den Store vorher auch irgendwie laden muss, damit die ID nicht angezeigt wird, sondern der Name und man die selectbox bekommt? Funktioniert das ganze mit der Tax, weil die Daten schon beim laden des backends verfügbar sind?

Wenn ich im Backend erst die app zum einen Model lade und im Anschluss das andere, wird alles richtig angezeigt (weil wohl dann der store geladen wurde).

Bin für jeden Tip und HInweis dankbar.

Daniel

Nachtrag: ich habe jetzt mal in der main.js der app ein

Ext.require(Shopware.apps.anderApp);

eingebaut. So werden zumindest beim zweiten öffnen nicht mehr die IDs angezeigt, sondern die Namen.
Ich habe auch versucht den Store in der main.js zu laden, aber mein eigener liefert immer undefined zurück. Lade ich einen Shopware Store, wird auch ein Store zugewiesen?!?

Daniel

Hallo,

habe das selbe Problem. 

Die Tax funktioniert einwandfrei. Bei Customer und Variant jedoch nicht…

Im Listing wird nur die Id angezeigt, in der Detail (SelectBox) ist die Anzahl der Einträge korrekt, jedoch kein Wert angezeigt.
Nur leere Zeilen.

Danke

Johannes

@Beyer schrieb:

Hallo,

habe das selbe Problem. 

Die Tax funktioniert einwandfrei. Bei Customer und Variant jedoch nicht…

Im Listing wird nur die Id angezeigt, in der Detail (SelectBox) ist die Anzahl der Einträge korrekt, jedoch kein Wert angezeigt.
Nur leere Zeilen.

Danke

Johannes

Hallo zusammen

Wir stehen momentan an genau denselben Problem.
Laut Dokumentation muss man ja „nur“ die Association integrieren und voilà.

Wir möchten beispielsweise vom Models/Order/Order die Customer anzeigen, jedoch ist im Listing immer noch nur die ID und in der Detailansicht das Feld anzuzeigende leer.
(Wenn man eines der leeren Felder auswählt und den Eintrag speichert, wird die ID des gewählten Feldes „korrekt“ gespeichert.)

Die Vermutung unsererseits ist, dass nur die Associations einen Text vorhanden haben, die in ihrem Model ein Feld mit „name“ besitzen.
Beispielsweise wird der orderStatus via Association ausgelesen. => Wenn man aber ein eigenes orderStatus erstellt hat, werden diese nicht angezeigt…

Hat jemand eine Lösungsidee?

Mit freundlichen Grüssen
Das KMUdo Team

Ps: Wäre es möglich diesen Thread zu Shopware 5 zu migrieren?

Wie es aussieht, wird diese Frage in diesem Thread beantwortet.

@KMUdo‍

Es ging bei der Frage in diesem Thread um eine ManyToOne Assoziation. In dem von dir verlinkten Beitrag geht es um eine OneToMany Assoziation.