だ。ログ。

開発とかスノボとかやきうとか。

EC-CUBE3の既存パーツ 購入の際の数量のサイズ調整

どうしても独自のデザインを当て込んだ際に、既存で提供されているパーツはそのまま残しておりデザインした物と大きさの統一感が揃わない。と言う事がある。
ただ、このパーツ自体はそのまま残してなんとか最小限の修正に抑えたい。と言う事も多々要望としてある。
javascriptの要素を強制的に変更する事も出来るが、提供パーツの修正は以下。

今回は商品詳細ページの数量部分を弄る。
/src/Eccube/Form/Type/AddCartType.php 83行目付近

        if ($Product->getStockFind()) {
            $builder
                ->add('quantity', 'integer', array(
                    'data' => 1,
                    'attr' => array(
                        'min' => 1,
                        'maxlength' => $this->config['int_len'],
                    ),
                    'constraints' => array(
                        new Assert\NotBlank(),
                        new Assert\GreaterThanOrEqual(array(
                            'value' => 1,
                        )),
                        new Assert\Regex(array('pattern' => '/^\d+$/')),
                    ),
                ))
            ;

元のソースをまずは貼ってみた。
addとして要素に情報を足している。今回の場合サイズを値で指定されたので以下ように変える

        if ($Product->getStockFind()) {
            $builder
                ->add('quantity', 'integer', array(
                    'data' => 1,
                    'attr' => array(
                        'min' => 1,
                        'maxlength' => $this->config['int_len'],
			'style' => "width:50px",
                    ),
                    'constraints' => array(
                        new Assert\NotBlank(),
                        new Assert\GreaterThanOrEqual(array(
                            'value' => 1,
                        )),
                        new Assert\Regex(array('pattern' => '/^\d+$/')),
                    ),
                ))
            ;

変更点はmaxlengthの下にstyleとしてサイズを明示した。サイズ自体はこれで変更出来る。

また余談だが、数量部分はmaxlengthが設定されているのにその値を越えてしまう。ここはmaxlengthに任せずにjsで制御するのも手かと思われる。