SilexからSymfony3にフレームワークが変更となったEC-CUBE4系。2系から3系ほどのインパクトではないものの、コードのバージョンアップは自動ではできないため、バージョンを移行するにはプログラムを理解して書き換えていく必要があります。
これからEC-CUBE3系のコードをEC-CUBE4系に書き換えていくことが多くなると思うので、なるべく省力化のため置換方法をまとめておきます。
$app関連
$app[‘orm.em’]
Eccube\Controller\AbstractControllerを継承しているController内では、$this->entityManagerに一括置き換え可能
$app->redirect(….)
$app->redirect($app->url(‘hogehoge’, array(‘key1’ => ‘param1’)));の場合、
$this->redirectToRoute(‘hogehoge’, array(‘key1’ => ‘param1’));に置き換える。
これはエディタに正規表現置換機能があれば一括で置換可能な場合も多そう。
Controller内じゃなければnew RedirectResponse($url, $status)だけど、$urlを生成するのが面倒そう
$app->addSuccess、$app->addError
Controller内では$this->addSuccessや$this->addErrorに一括置換可能
$app->form()
Controller内では$this->formFactory->createBuiler()に一括置換可能
FormType関連
empty_valueオプション
empty_valueはSympony3では存在しないので「placeholder」に一括で置換
propertyオプション
「property_path」に一括で置換
管理画面Twig関連
{% extends ‘@admin/default_frame.twig’ %}
@adminというnamespaceが必要になっているので追加。一括置換可能。
bootstrap_4_horizontal_layout.html.twig
{% form_theme form ‘Form/bootstrap_3_horizontal_layout.html.twig’ %}という風に書いていたが
{% form_theme form ‘@admin/Form/bootstrap_4_horizontal_layout.html.twig’ %} に一括置換
Bootstrapのバージョンも4に変更になっている。
config.ymlのpath関連
{{ app.config.admin_urlpath }}/assets/js/vendor/jquery.ui/jquery.ui.core.min.js | {{ asset(‘assets/js/vendor/jquery.ui/jquery.ui.core.min.js’, ‘admin’) }} |
bootstrap-datetimepicker.min.js | tempusdominus-bootstrap-4.min.js |
{{ app.config.image_save_urlpath }} | {{ asset(‘hogehoge’, ‘save_image’) }} |
$this->config
$this->configは$this->eccubeConfigに変更。
設定パラメーター名も変わっています。例えば、$this->config[‘mtext_len’]は$this->eccubeConfig[‘eccube_mtext_len’]へ変更されています。
また、コンストラクタでの依存性注入(DI)が必要です。
/** * @var \Eccube\Common\EccubeConfig */ protected $eccubeConfig; public function __construct(\Eccube\Common\EccubeConfig $eccubeConfig) { $this->eccubeConfig = $eccubeConfig; }
Rankカラム関連
ECCUBE3系では各テーブルにrankというカラムがありましたが、データベース予約語の事情によりsort_noに変更されています。
エンティティのプロパティ名、セッター・ゲッターの変更が必要です。
EC-CUBEに関するお問い合わせ
[重要]現在公式にセキュリティサポートが切れていないPHPは8.1以上、MySQLは8.0以上で、対応しているEC-CUBEバージョンは4.2以上です。古いEC-CUBEを使っている方は適切なタイミングでバージョンアップをご検討ください。