我有一个Shopware 6插件,它当前使用布尔配置reviewSkipModeration
值,可以自动发布通过该插件提交的任何 comments :
config.xml
个个
<input-field type="bool">
<name>reviewSkipModeration</name>
<label>Accept reviews automatically</label>
<defaultValue>true</defaultValue>
</input-field>
该插件的当前版本是1.7.2.在新版本1.7.3中,我想删除reviewSkipModeration
个布尔配置,并添加一个新的autoPublishStars
多选配置:
config.xml
个个
<input-field type="single-select">
<name>autoPublishStars</name>
<label>Auto Publish review with stars</label>
<label lang="de-DE">Sterne vorausgewählt</label>
<defaultValue>0</defaultValue>
<options>
<option>
<id>无</id>
<name>无</name>
<name lang="de-DE">无</name>
</option>
<option>
<id>0</id>
<name>0颗星</name>
<name lang="de-DE">0颗星</name>
</option>
<option>
<id>1</id>
<name>1颗星</name>
<name lang="de-DE">1 Stern</name>
</option>
<option>
<id>2</id>
<name>2颗星</name>
<name lang="de-DE">2 Sterne</name>
</option>
<option>
<id>3</id>
<name>3颗星</name>
<name lang="de-DE">3 Sterne</name>
</option>
<option>
<id>4</id>
<name>4颗星</name>
<name lang="de-DE">4 Sterne</name>
</option>
<option>
<id>5</id>
<name>5星</name>
<name lang="de-DE">5 Sterne</name>
</option>
</options>
</input-field>
这方面的当前逻辑在控制器中实现.由于我想删除新版本的if (!$this->config->getReviewSkipModeration()) {...}
,应该在控制器中进行哪些更改?:
$commentStatus = true;
if($reviewPoints < $this->config->getAutoPublishStars()){
$commentStatus = !$commentStatus;
}
if (!$this->config->getReviewSkipModeration()) {
$commentStatus = false;
}
$create = [
'productId' => $sArticleId,
'customerId' => $customer->getCustomerId(),
'salesChannelId' => $salesChannelContext->getSalesChannel()->getId(),
'languageId' => $salesChannelContext->getContext()->getLanguageId(),
'externalUser' => $this->anonymizeName($isAnon, $customer),
'externalEmail' => $orderNumberAsEmail,
'title' => $commentHeadline,
'content' => $commentContent,
'points' => $reviewPoints,
'status' => $commentStatus,
];
我想将布尔配置功能迁移到新版本,方法是将to avoid changing the default behavior for existing users during an update迁移到具有以下选项的多选配置.我如何才能使用从config.xml到控制器的"无"呢?我是否可以像在控制器中访问"0"一样访问"无"选项?:
- 无
- 0颗星
- 1颗星
- 2颗星
- 3颗星
- 4颗星
- 5星
在我的UPDATE方法中,如何正确地迁移数据,以便:
- false maps to 无
- true maps to 0颗星
我的插件更新函数如下所示:
public function update(UpdateContext $context): void {
parent::update($context);
}
但我不确定如何处理映射.如有任何帮助,我们不胜感激!