问题描述
我有一个自定义模块,我需要在此模块中以多选方式获取属性列表。
shopware 6 怎么可能?
我确实尝试过下面的代码,但我无法理解。
custom/plugins/CustomProduct/src/Resources/app/administration/src/module/custom-product/page/custom-product-detail/custom-product-detail.html.twig
Future<bool> get isConnectedToInternet async {
final ConnectivityResult connectivityResult =
await Connectivity().checkConnectivity();
return connectivityResult == ConnectivityResult.wifi ||
connectivityResult == ConnectivityResult.mobile;
}
custom/plugins/CustomProduct/src/Resources/app/administration/src/module/custom-product/page/custom-product-detail/index.js
{% block custom_product_detail %}
<sw-page class="custom-product-detail">
<template slot="smart-bar-actions">
<sw-button
:disabled="isLoading"
:routerLink="{ name: 'custom.product.list' }">
{{ $t('custom-product.detail.actions.cancel-button') }}
</sw-button>
<sw-button-process
:isLoading="isLoading"
custom="primary"
@process-finish="saveFinish"
@click="onClickSave">
{{ $t('custom-product.detail.actions.save-button') }}
</sw-button-process>
</template>
<template slot="content">
<sw-card-view>
<sw-card
v-if="module"
:isLoading="isLoading"
class="information-card">
<sw-entity-multi-select
:label="$t('custom-product.detail.assignPropertyLabel')"
v-model="module.propertyGroupTranslation">
</sw-entity-multi-select>
</sw-card>
</sw-card-view>
</template>
</sw-page>
{% endblock %}
解决方法
我得到了解决方案。
custom/plugins/CustomProduct/src/Resources/app/administration/src/module/custom-product/page/custom-product-detail/custom-product-detail.html.twig
<sw-entity-multi-select
:label="$t('custom-product.detail.assignPropertyLabel')"
v-model="module.propertyGroupTranslation">
</sw-entity-multi-select>
替换为
<sw-multi-select
v-if="customProduct"
:label="$t('custom-product.detail.assign-property-group-options')"
:options="propertyOpt"
labelProperty="translated.name"
valueProperty="id">
</sw-multi-select>
custom/plugins/CustomProduct/src/Resources/app/administration/src/module/custom-product/page/custom-product-detail/index.js
import template from './custom-product-detail.html.twig';
const { Component,Mixin } = Shopware;
const { Criteria } = Shopware.Data;
Component.register('custom-product-detail',{
template,inject: [
'repositoryFactory'
],mixins: [
Mixin.getByName('notification')
],metaInfo() {
return {
title: this.$createTitle()
};
},data() {
return {
customProductId: undefined,customProduct: {},isLoading: false,processSuccess: false,propertyOpt: [],};
},created() {
this.createdComponent();
},computed: {
propertyOptionCriteria() {
const criteria = new Criteria();
criteria.addAssociation('group');
return criteria;
},customRepository() {
return this.repositoryFactory.create('custom_product');
},propertyOptionRepository() {
return this.repositoryFactory.create('property_group_option');
},},methods: {
getModule() {
this.customRepository.get(this.$route.params.id,Shopware.Context.api).then((entity) => {
this.customProduct = entity;
this.isLoading = false;
});
},createdComponent() {
this.isLoading = true;
if (this.$route.params.id && this.customProduct.isLoading !== true) {
this.customProductId = this.$route.params.id;
this.loadPropertyOption();
}
this.isLoading = false;
},loadPropertyOption() {
return this.propertyOptionRepository.search(this.propertyOptionCriteria,Shopware.Context.api)
.then((propertyOption) => {
this.propertyOpt = propertyOption;
});
},}
});