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」)を定義 または 削除すれば解消します。
ちなみに、変数を定義する方法は以下の通りです。