У меня есть поле в бэкэнд-модели extjs с полем, которое вызывает 'store' и совпадает с ассоциацией ManyToOne в сущности.Я передаю соответствующие данные из контроллера, но поле не заполняется данными или не заменяется раскрывающимся списком для параметров ассоциации.
Вот как это выглядит в настоящее время:
Вот модель:
Ext.define('Shopware.apps.MyModule.model.PrimaryDateExemption', {
extend: 'Shopware.data.Model',
configure: function() {
return {
controller: 'MyModule',
detail: 'Shopware.apps.MyModule.view.detail.PrimaryDateExemption'
};
},
associations: [
{
relation: 'ManyToOne',
field: 'storeId',
type: 'hasMany',
name: 'getName',
associationKey: 'store',
model: 'Shopware.apps.StoreLocator.model.Main'
}
],
fields: [
{ name : 'id', type: 'int', useNull: true },
{ name : 'primaryDate', type: 'date', dateFormat: 'd.m.Y' },
{ name : 'storeId', type: 'int', useNull: true }
]
});
Идентификаторы и даты отображаются в виде сетки и подробного представления, но все яget - целочисленное поле для магазина.Из того, что я могу сказать из документации https://developers.shopware.com/developers-guide/backend-components/associations/ мне не нужно ничего добавлять.Чтобы процитировать этот документ:
Поскольку ассоциации могут отображаться одинаково, Shopware.data.Model уже имеет некоторые предварительно настроенные представления.Например, связи ManyToOne (например, product & tax) всегда отображают комбинированный список. Чтобы объединить эту информацию в одно поле, вы предоставляете поле опции: 'taxId', которое указывает приложению заменить поле ввода по умолчанию соответствующим настроенным компонентом.ранее.
Вот сущность:
<?php
namespace MyModule\Models;
use Doctrine\ORM\Mapping as ORM;
use Shopware\Components\Model\ModelEntity;
/**
* @ORM\Entity
* @ORM\Table(name="s_primary_date_exemption")
*/
class PrimaryDateExemption extends ModelEntity
{
/**
* @var int $id
*
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var \DateTime
*
* @ORM\Column(type="date")
*/
private $primaryDate;
/**
* @ORM\ManyToOne(targetEntity="NetiStoreLocator\Models\Store")
* @ORM\JoinColumn(name="store_id", referencedColumnName="id")
*/
private $store = null;
/**
* @return int
*/
public function getId()
{
return $this->id;
}
public function getPrimaryDate()
{
return $this->primaryDate;
}
public function setPrimaryDate($primaryDate)
{
$this->primaryDate = $primaryDate;
}
/**
* @return null|mixed
*/
public function getStore()
{
return $this->store;
}
/**
* Get ID of pick up store or null if none set
*
* @return null|int
*/
public function getStoreId()
{
return ($this->store !== null) ? $this->store->getId() : null;
}
/**
* @param mixed $store
*/
public function setStore($store)
{
$this->store = $store;
}
}
Это контроллер, который возвращает данные:
<?php
use MyModule\Models\PrimaryDateExemption;
class Shopware_Controllers_Backend_MyModule extends Shopware_Controllers_Backend_Application
{
protected $model = PrimaryDateExemption::class;
protected $alias = 'primary_date';
protected function getListQuery()
{
$builder = parent::getListQuery();
$builder->leftJoin('primary_date.store', 'store');
$builder->addSelect(array('store'));
return $builder;
}
protected function getDetailQuery($id)
{
$builder = parent::getDetailQuery($id);
$builder->leftJoin('primary_date.store', 'store');
$builder->addSelect(array('store'));
return $builder;
}
}
Как я уже сказал, я вижучто данные для сетки возвращаются с разумными данными (отформатированными для удобства просмотра):
{
"success": true,
"data" :
[{
"id": 14,
"primaryDate": new Date(1566860400000),
"store": {
"id": 1,
"subshopIDs": "0",
"name": "George Street, London"
}
}, {
"id": 1,
"primaryDate": new Date(1545696000000),
"store": null
}, {
"id": 3,
"primaryDate": new Date(1535410800000),
"store": null
}, {
"id": 4,
"primaryDate": new Date(1545264000000),
"store": null
}, {
"id": 5,
"primaryDate": new Date(1545350400000),
"store": null
}, {
"id": 6,
"primaryDate": new Date(1545782400000),
"store": null
}, {
"id": 7,
"primaryDate": new Date(1545868800000),
"store": null
}, {
"id": 8,
"primaryDate": new Date(1546300800000),
"store": null
}, {
"id": 9,
"primaryDate": new Date(1546387200000),
"store": null
}, {
"id": 10,
"primaryDate": new Date(1555628400000),
"store": null
}, {
"id": 11,
"primaryDate": new Date(1555974000000),
"store": null
}, {
"id": 12,
"primaryDate": new Date(1557183600000),
"store": null
}, {
"id": 13,
"primaryDate": new Date(1558998000000),
"store": null
}],
"total":13
}
Если здесь нет явной ошибки, может кто-нибудь указать мне на некоторую документацию для этой магии ассоциации с extJs?Документация по магазинам в этой области довольно легкая.