参考ページ
やりたいこと
「商品サイズ(productsize)」を商品登録項目で追加と、検索項目に追加。
上記の参考ページを参考にしました。
「商品サイズ(productsize)」を商品登録項目で追加と、検索項目に追加。
上記の参考ページを参考にしました。
商品登録項目追加
1.テーブルへのカラム追加
「dtb_product」テーブルに「productsize」という名前のカラムを追加
2.src/Eccube/Entity/Product.php
/** * @var string */ private $productsize; /** * @return string */ public function getProductSize() { return $this->productsize; } /** * @param string $size * @return \Eccube\Entity\Product */ public function setProductSize($productsize) { $this->productsize = $productsize; return $this; }
3.src/Eccube/Resource/doctrine/Eccube.Entity.Product.dcm.yml
fields:に以下を追加
productsize: type: text nullable: true
4.フォーム定義
src/Eccube/Form/Type/Admin/ProductType.phpの「public function buildForm(FormBuilderInterface $builder, array $options)」に
$builder->add('productsize', 'text', array( 'label' => '寸法', 'required' => false, ));
5.管理画面に追加
template/admin/Product/product.twig
{{ form_row(form.productsize) }}
6.商品詳細にアウトプット
template/default/Product/detail.twig
{{ Product.productsize }}
検索項目に追加
1.ブロックタイプに追加
src/Eccube/Form/Type/SearchProductBlockType.php
に
$builder->add('productsize', 'text', array( 'required' => false, 'empty_data' => null, 'attr' => array( 'maxlength' => 50, ), ));
を追加。
2.ブロックタイプのフォームに検索項目を増やす
app/template/test/Block/search_product.twigに追加
{{ form_widget(form.productsize, {'attr': { 'placeholder' : "寸法" }} ) }}
3.検索ロジックの追加
src/Eccube/Repository/ProductRepository.phpに追加
public function getQueryBuilderBySearchData($searchData)の中
if (isset($searchData['productsize']) && Str::isNotBlank($searchData['productsize'])) { $qb->andWhere('LOWER(p.productsize) LIKE :productsize') ->setParameter('productsize', '%' . mb_convert_kana($searchData['productsize'], "nr", "utf-8") . '%'); }
上記の方法で、一応、英数字は半角全角どちらでもヒットするようになっています。
4.$searchDataに追加
src/Eccube/Form/Type/SearchProductType.php
の「public function buildForm(FormBuilderInterface $builder, array $options)」に
$builder->add('productsize', 'text', array( 'required' => false, 'empty_data' => null, 'attr' => array( 'maxlength' => 50, ), ));
を追加。
とりあえず、「テキスト」はできそう。「checkbox」とか「select」とかは研究しないといけません。
[…] https://www.terastella.com/ec-cube3-add-form.html […]