Rumah > Soal Jawab > teks badan
Saya mempunyai pemalam Shopware 6 yang kini dikonfigurasikan dengan nilai boolean reviewSkipModeration
yang secara automatik menyiarkan sebarang ulasan yang diserahkan melalui pemalam:
config.xml
<input-field type="bool"> <name>reviewSkipModeration</name> <label>Accept reviews automatically</label> <defaultValue>true</defaultValue> </input-field>
Versi semasa pemalam ini ialah 1.7.2. Dalam versi baharu 1.7.3, saya ingin mengalih keluar reviewSkipModeration
布尔配置并添加新的 autoPublishStars
konfigurasi boolean dan menambah autoPublishStars
konfigurasi berbilang pilih:
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>None</id> <name>None</name> <name lang="de-DE">None</name> </option> <option> <id>0</id> <name>0 Stars</name> <name lang="de-DE">0 Stars</name> </option> <option> <id>1</id> <name>1 Star</name> <name lang="de-DE">1 Stern</name> </option> <option> <id>2</id> <name>2 Stars</name> <name lang="de-DE">2 Sterne</name> </option> <option> <id>3</id> <name>3 Stars</name> <name lang="de-DE">3 Sterne</name> </option> <option> <id>4</id> <name>4 Stars</name> <name lang="de-DE">4 Sterne</name> </option> <option> <id>5</id> <name>5 Stars</name> <name lang="de-DE">5 Sterne</name> </option> </options> </input-field>
Logik semasa dilaksanakan dalam pengawal. Memandangkan saya mahu memadamkan versi baharu if (!$this->config->getReviewSkipModeration()) {...}
apakah perubahan yang perlu dibuat dalam pengawal? :
$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, ];
Saya ingin memindahkan fungsi konfigurasi boolean kepada versi baharu, elakkan menukar tingkah laku lalai untuk pengguna sedia ada semasa kemas kini ke konfigurasi berbilang pilihan dengan pilihan berikut. Bagaimana untuk menggunakan "Tiada" dalam config.xml kepada pengawal? Bolehkah saya mengakses pilihan "Tiada" dengan cara yang sama saya mengakses "0" dalam pengawal? :
Dalam kaedah kemas kini saya, cara memindahkan data dengan betul:
Fungsi kemas kini plug-in saya adalah seperti berikut:
public function update(UpdateContext $context): void { parent::update($context); }
Tetapi saya tidak pasti cara mengendalikan pemetaan. Sebarang bantuan akan sangat dihargai!
P粉4182142792024-04-04 18:59:42
Jika saya faham dengan betul, anda harus menukar kaedah kemas kini dahulu, anda boleh menyemak sama ada konfigurasi boolean lama adalah benar atau palsu dan kemudian memetakannya kepada konfigurasi berbilang pilihan baharu yang sepadan
public function update(UpdateContext $context): void { parent::update($context); $previousConfigVal = $this->config->getReviewSkipModeration(); $newConfigVal = $previousConfigVal ? 0 : 'None'; $this->config->setAutoPublishStars($newConfigVal); }
Selepas itu, jika anda menggunakan PHP 8, anda boleh menggunakan [suis][1] atau [padan][2] mudah untuk mendapatkan pilihan yang berbeza
$autoPublishStars = $this->config->getAutoPublishStars(); switch ($autoPublishStars) { case 'None': $commentStatus = false; break; case '0': $commentStatus = false; break; case '1': $commentStatus = ($reviewPoints >= 1); break; case '2': $commentStatus = ($reviewPoints >= 2); break; case '3': $commentStatus = ($reviewPoints >= 3); break; case '4': $commentStatus = ($reviewPoints >= 4); break; case '5': $commentStatus = ($reviewPoints >= 5); break; default: $commentStatus = true; }
Saya rasa ini mungkin berkesan untuk anda, jika tidak kita boleh sumbang saran bersama untuk mencari penyelesaian [1]: https://www.php.net/manual/ fr/control-structs.switch.php [2]: https://www.php.net/manual/ en/control-structs.match.php