【EC-CUBE 4】遭遇したエラー&対処法まとめ

EC-CUBE 4のカスタマイズに際し、筆者が遭遇したエラーとその対処法について記録を残しています。(随時更新中)
同じようなエラーに遭遇したときの参考になれば幸いです。

目次

ファイル名とクラス名が異なるケース

Compile Error: Cannot declare class Customize\Controller\SamplePageController, because the name is already in use

ファイル名とクラス名が一致しない場合に発生するエラーです。オートローダーがクラス名から対応するファイルを見つける際に、ファイル名とクラス名が一致していないと、クラスを正しくロードできないために発生するようです。

ファイル名とクラス名を同じにすれば解決します。
上の例では「SampleController.php」というファイル名なので、そこに記載するクラス名は「SampleController」にします。

useステートメントがファイルに含まれていないケース

Attempted to load class “AbstractController” from namespace “Customize\Controller”.
Did you forget a “use” statement for e.g. “Symfony\Bundle\FrameworkBundle\Controller\AbstractController” or “Eccube\Controller\AbstractController”?

このファイル内で使用しているクラス(この場合「AbstractController」)が、「use」ステートメントに含まれていない場合に発生します。既存のControllerなどのファイルをCustomizeディレクトリに複製してカスタマイズした場合に発生しやすいです。

利用するファイルを「useステートメント」に追加すれば解消します。
上の例では、「use Eccube\Controller\AbstractController;」を追加します。

Twigに渡されていない変数が使われているケース

Variable “sample” does not exist

ページにアクセスしたとき、そのページを構成するTwigテンプレート内で使用している変数(この場合「sample」)が定義されていない場合に発生します。ControllerからTwigに渡すはずの変数を定義し忘れていたり、単に変数のスペルを間違えていたりする場合に発生しやすいです。

エラーメッセージに表示されている変数(上の例では「sample」)を定義 または 削除すれば解消します。
ちなみに、変数を定義する方法は以下の通りです。

クラス内で同じメソッドを複数回宣言しているケース

Compile Error: Cannot redeclare Customize\Controller\SampleController::index()

クラスの中で同じ名前のメソッドを2回以上宣言しようとしたときに発生します。この例では、SampleController クラス内で index メソッドが重複して定義されていることが原因です。すでに宣言されているメソッドをコピーして新しいメソッドを作成したときに、メソッド名の変更を忘れて更新してしまうと発生しやすいです。

indexメソッドが1つになるよう削除するか、メソッド名を変更すれば解消します。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次