4.1から4.2へのマイグレーション
EC-CUBE4.1から4.2へのマイグレーションを解説します。
EC-CUBE本体および一部公式プラグインをEC-CUBE4.2対応し、コードの移植が必要な箇所をまとめたものです。
プラグインコードの変更
4.2は、4.1からの互換性がないバージョンになります。
ソースコードを共存させることができないため、4.0/4.1対応版プラグインとは別プラグインとして実装する必要があります。
composer.json
composer.jsonのプラグインコードを変更します。
以下はメルマガプラグインの修正例です。
{
- "name": "ec-cube/mailmagazine4",
+ "name": "ec-cube/mailmagazine42",
"version": "4.2.0",
"description": "メールマガジンプラグイン",
"type": "eccube-plugin",
"require": {
"ec-cube/plugin-installer": "~0.0.6 || ^2.0"
},
"extra": {
- "code": "MailMagazine4"
+ "code": "MailMagazine42"
}
}
namespaceの変更
namespaceをプラグインコードにあわせ、変更します。
以下はメルマガプラグインの修正例です。
<?php
- namespace Plugin\MailMagazine4;
+ namespace Plugin\MailMagazine42;
use Eccube\Common\EccubeNav;
class MailMagazineNav implements EccubeNav
{
Symfony5.4対応
Symfony5.4での変更をすべて網羅できているわけではないため、記載されていない問題があった場合は、SymfonyのUPGRADEドキュメントも合わせて参照してください。
Form関連
FormExtension
getExtendedTypesの戻り値の型を定義する必要があります。
/**
* Return the class of the type being extended.
*/
- public static function getExtendedTypes()
+ public static function getExtendedTypes(): iterable
{
return [EntryType::class];
}
Repository関連
ManagerRegistry
ManagerRegistryのnamespaceが変更されました。
Doctrine\Persistence\ManagerRegistry
へ変更します。
<?php
namespace Plugin\MailMagazine4\Repository;
- use Doctrine\Common\Persistence\ManagerRegistry;
+ use Doctrine\Persistence\ManagerRegistry;
use Eccube\Repository\AbstractRepository;
use Plugin\MailMagazine4\Entity\MailMagazineSendHistory;
use Eccube\Doctrine\Query\Queries;
twig関連
forループでのifの利用
forループでのifは利用できなくなります。filterを使用してください。
- {% for f in searchForm if f.vars.eccube_form_options.auto_render %}
+ {% for f in searchForm|filter(f => f.vars.eccube_form_options.auto_render) %}
SwiftMailer関連
SymfonyMailerへの移行
メール送信ライブラリがSwiftMailer から SymfonyMailer に変更されました。
SwiftMailerを直接使用している場合は、SymfonyMailerでの実装に変更してください。
- $message = (new \Swift_Message())
- ->setSubject('['.$this->BaseInfo->getShopName().'] '.$formData['mail_subject'])
- ->setFrom([$this->BaseInfo->getEmail01() => $this->BaseInfo->getShopName()])
- ->setTo([$Order->getEmail()])
- ->setBcc($this->BaseInfo->getEmail01())
- ->setReplyTo($this->BaseInfo->getEmail03())
- ->setReturnPath($this->BaseInfo->getEmail04())
- ->setBody($formData['tpl_data']);
+ $message = (new Email())
+ ->subject('['.$this->BaseInfo->getShopName().'] '.$formData['mail_subject'])
+ ->from(new Address($this->BaseInfo->getEmail01(), $this->BaseInfo->getShopName()))
+ ->to($Order->getEmail())
+ ->bcc($this->BaseInfo->getEmail01())
+ ->replyTo($this->BaseInfo->getEmail03())
+ ->returnPath($this->BaseInfo->getEmail04())
+ ->text($formData['tpl_data']);
こちらの差分も合わせて参考にしてください。
https://github.com/EC-CUBE/ec-cube/pull/5353/commits/ff6a6962736c87fe8e9b7427ba2cbebbb3000c43
Event関連
EventDispatcherのシグネチャ変更
$eventDispatcher->dispatch()の引数の順序が逆になりました。
独自にフックポイントを定義している場合は、引数の順序を変更してください。
- $this->eventDispatcher->dispatch(EccubeEvents::FRONT_ENTRY_INDEX_INITIALIZE, $event);
+ $this->eventDispatcher->dispatch($event, EccubeEvents::FRONT_ENTRY_INDEX_INITIALIZE);
パラメータ関連
envパラメータ
envパラメータで、boolや数値が利用できなくなりました。
services.yamlで、envパラメータを利用している場合は、文字列で記述するように変更してください。
parameters:
- env(ECCUBE_FORCE_SSL): false
+ env(ECCUBE_FORCE_SSL): '0'
- env(ECCUBE_2FA_EXPIRE): 14
+ env(ECCUBE_2FA_EXPIRE): '14'
テストコード
setUp/tearDown
setUp/tearDownメソッドは、戻り値の型を定義する必要があります。
- setUp()
+ setUp(): void
- tearDown()
+ tearDown(): void
Bootstrap5対応
Bootstrapを5.0に更新しました。
ここで記載した内容は一部です。変更点の詳細は以下のドキュメントをご確認ください。
https://getbootstrap.jp/docs/5.0/migration/
data変数のbsプレフィクス
モーダルなど、bootstrapで使われるdata変数にbsプレフィクスがつくようになりました。
- data-keyword
+ data-bs-keyword
- data-dismiss
data-bs-dismiss
- data-toggle
+ data-bs-toggle
Close buttton
閉じるボタンのクラス名が変更されました。
- .close
+ .btn-close
text-right, text-left
右寄せ、左寄せのクラス名が変更されました。
- .text-left
+ .text-start
- .text-right
+ .text-end