EC-CUBE Lab
produced by Cajiya
EC-CUBEに関するカスタマイズ方法やトラブルへの対処方法を発信

商品登録フォームのinputをtextareaに変更するカスタマイズ方法

公開日: 2025年10月12日 | 更新日: 2025年11月03日
商品 EC-CUBE 4系全般

要望や症状

商品登録時の入力欄がinputタグで表示されており、より多くのテキストを入力しやすいようにtextareaタグに変更したい。

対象画面

管理画面の商品登録・編集画面における各種入力フィールドが対象となります。デフォルトの状態では、商品名やその他のテキストフィールドが一行のinput要素として表示されるため、長い文章を入力する際に不便を感じることがあります。

理由や原因

EC-CUBE 4系では、商品登録フォームはFormTypeクラスで定義されており、各フィールドのHTMLタグタイプもここで指定されています。デフォルトでは多くのフィールドがTextTypeで定義されているため、input要素として出力される仕組みになっています。このため、複数行のテキスト入力が必要な場合でも一行の入力欄として表示されてしまいます。

解決策

FormTypeExtensionを使用して、既存の商品登録フォームの入力フィールドをtextareaに変更することで解決できます。

Customizeディレクトリでの拡張手順

1. FormTypeを拡張するためのカスタマイズクラスを作成する

以下のファイルを作成して、商品フォームを拡張します。

// app/Customize/Form/Extension/ProductTypeExtension.php
<?php

namespace Customize\Form\Extension;

use Eccube\Form\Type\Admin\ProductType;
use Symfony\Component\Form\AbstractTypeExtension;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\FormBuilderInterface;

class ProductTypeExtension extends AbstractTypeExtension
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        // 商品名をtextareaに変更する例
        $builder->add('name', TextareaType::class, [
            'attr' => [
                'rows' => 3,
                'maxlength' => 255,
            ],
        ]);
    }

    public static function getExtendedTypes(): iterable
    {
        return [ProductType::class];
    }
}

2. サービス定義ファイルを作成してFormTypeExtensionを登録する

Extensionクラスをサービスとして登録するため、以下のファイルを作成します。

# app/Customize/Resource/config/services.yaml
services:
    Customize\Form\Extension\ProductTypeExtension:
        tags:
            - { name: form.type_extension, extended_type: Eccube\Form\Type\Admin\ProductType }

3. キャッシュをクリアして変更を反映する

変更内容を反映させるため、以下のコマンドを実行してキャッシュをクリアします。

bin/console cache:clear

複数フィールドを変更する場合

複数のフィールドを同時にtextareaに変更したい場合は、buildFormメソッド内で複数のaddメソッドを記述します。

// 複数フィールドの例
public function buildForm(FormBuilderInterface $builder, array $options)
{
    // 商品名
    $builder->add('name', TextareaType::class, [
        'attr' => ['rows' => 3],
    ]);
    
    // 商品説明(既存がTextareaTypeの場合は行数変更)
    $builder->add('description_detail', TextareaType::class, [
        'required' => false,
        'attr' => ['rows' => 8],
    ]);
}

実装時の注意点

FormTypeExtensionは既存のフィールド定義を上書きするため、必要な制約(maxlength等)は明示的に指定する必要があります。バリデーション設定も元のFormTypeから引き継がれますが、必要に応じて再定義を検討してください。また、EC-CUBEのアップデート時にFormTypeの仕様変更があった場合、カスタマイズの見直しが必要になる可能性があることも考慮しておきましょう。

免責事項

本記事に掲載しているコードや手順は、執筆時点での情報および特定の環境下での動作確認に基づいています。 EC-CUBEのバージョン、サーバー環境、導入済みプラグインとの競合などにより、予期せぬ不具合が発生する可能性があります。

本記事の内容を実行した結果、生じた損害(データの消失、サイトの停止、機会損失など)について、当サイトおよび管理者は一切の責任を負いかねます。 実装にあたっては、必ずバックアップを取得し、検証環境(テスト環境)での動作確認を行った上で、ご自身の責任において実施してください。

この記事は参考になりましたか?

著者プロフィール: 株式会社カジヤ

当社はWeb業界の専門家として、培った経験や技術、自社事業を通して得た知見を土台に、 お客様の事業の成長を後押しすることを提供価値として活動する、Web事業の成長支援会社です。 EC-CUBE公式のパートナー制度「EC-CUBE インテグレートパートナー」に登録してしており、上位11%にあたる「ゴールドランク」に認定された実績があり、新しい通販サイトの構築から、カスタマイズ、リニューアルまで幅広く対応します。

商品 の関連記事

商品 データ不整合 EC-CUBE 4系全般
EC-CUBEで取り扱い終了商品の削除ができない理由と対応方法

EC-CUBEでは、取り扱いを終了した商品を削除したい場合に、削除ができない状態になることがあります...

👍 1 / 👎 0 2025年10月12日
商品 表示/テンプレート調整 EC-CUBE 4系全般
会員のみに商品価格を表示するカスタマイズ方法

EC-CUBEで会員専用サイトや卸売りサイトを構築する際、商品価格をログイン前は非表示にし、会員ログ...

👍 0 / 👎 0 2025年10月12日
商品 検索・絞り込み強化 EC-CUBE 4系全般
管理画面の商品一覧検索で、英字大文字小文字を区別しないようにするカスタマイズ方法

EC-CUBE 4系 の管理画面において、商品一覧の検索機能で英字の大文字小文字が区別される仕様とな...

👍 0 / 👎 0 2025年10月12日
商品 EC-CUBE 4.2系 / Symfony 5.4 Twig改修
商品画像の登録枚数の上限数を変更する方法

EC-CUBE 4.2系の管理画面で商品登録を行う際、商品画像が10枚までしか登録できない制限があり...

👍 0 / 👎 0 2025年10月12日
商品 EC-CUBE 4.2系 / Symfony 5.4 サービス/コントローラ拡張
商品登録画面のフリーエリアでTwig構文を使用可能にするカスタマイズ方法

商品登録画面のフリーエリアでTwig構文を使用した画像パスを入力すると、保存時に構文がHTMLエスケ...

👍 0 / 👎 0 2025年09月24日

EC-CUBE 4系全般 の関連記事

商品 データ不整合 EC-CUBE 4系全般
EC-CUBEで取り扱い終了商品の削除ができない理由と対応方法

EC-CUBEでは、取り扱いを終了した商品を削除したい場合に、削除ができない状態になることがあります...

👍 1 / 👎 0 2025年10月12日
インストール・セットアップ EC-CUBE 4系全般 設定変更
EC-CUBEサイトのドメイン変更時の設定変更方法

EC-CUBEで構築したサイトを新しいドメインで公開する際に、どのような設定変更が必要かわからない場...

👍 0 / 👎 0 2025年10月12日
メール通知 通知/コミュニケーション EC-CUBE 4系全般
メール件名のショップ名を英語表記に変更する方法

EC-CUBE 4系で、メール件名の先頭に自動挿入される店舗名を英語表記に変更したい場合があります。...

👍 0 / 👎 0 2025年10月12日
フロント共通 機能不動作 EC-CUBE 4系全般
CloudFrontを利用時にリンクのドメインがEC2のパブリックDNSになってしまう問題の解決方法

EC-CUBE 4.2をAWS ECS on EC2上で構築し、CloudFrontをCDNとして利...

👍 1 / 👎 0 2025年10月12日
サイト全体 500エラー EC-CUBE 4系全般
EC-CUBEでメモリ不足エラーが発生した場合の対処方法

EC-CUBEの運用中に以下のようなメモリ不足エラーが発生することがあります。 ### エラー...

👍 1 / 👎 0 2025年10月12日