EC-CUBE4 お問い合わせフォームに添付ファイルを追加
EC-CUBE 4 では、Symfony の FormExtension の仕組みを使って、既存のフォームをカスタマイズできます。
EC-CUBE 4 開発者向けドキュメント FormType のカスタマイズ (opens new window)
Symfony のドキュメント (opens new window)
拡張方法
app/Customize/Form/Extension/
に AbstractTypeExtension を継承したクラスファイルを作成することで、自動的に FormExtension として認識されます。
拡張するフォーム種類の指定
EC-CUBE 4.1 以降は、getExtendedType 関数は必ず実装し、拡張するフォームの種類を指定する必要があります。
拡張用の関数
以下の関数をオーバーライドし、引数で渡されるパラメータを変更することでフォームのカスタマイズが可能です。
buildForm()
buildView()
configureOptions()
finishView()
app/Customize/Form/Extension/ContactTypeExtension.php
を新規作成
FileUploader クラスを作成する
app/Customize/Service/FileUploader.php
作成
MailService クラスを作成
メール送信時にファイル添付を行うため、既存の送信処理を改修する必要があります。
そのため既存の src/Eccube/Service/MailService::sendContactMail
をオーバーロードします。
app/Customize/Service/MailService.php
作成
カスタマイズ MailService 優先設定
app/Customize/Resource/config/services.yaml
作成
既存の MailService よりも今回作成した MailService が優先されるように
お問い合わせページに添付ファイル項目追加 twig 編集
app/template/default/Contact/index.twig
を編集
お問い合わせ確認ページに添付ファイル項目追加 twig 編集
app/template/default/Contact/confirm.twig
を編集