参考ページ
やりたいこと
「商品サイズ(productsize)」を商品登録項目で追加と、検索項目に追加。
上記の参考ページを参考にしました。
「商品サイズ(productsize)」を商品登録項目で追加と、検索項目に追加。
上記の参考ページを参考にしました。
商品登録項目追加
1.テーブルへのカラム追加
「dtb_product」テーブルに「productsize」という名前のカラムを追加
2.src/Eccube/Entity/Product.php
[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;
}
[/php]
3.src/Eccube/Resource/doctrine/Eccube.Entity.Product.dcm.yml
fields:に以下を追加
[php]
productsize:
type: text
nullable: true
[/php]
4.フォーム定義
src/Eccube/Form/Type/Admin/ProductType.phpの「public function buildForm(FormBuilderInterface $builder, array $options)」に
[php]
$builder->add(‘productsize’, ‘text’, array(
‘label’ => ‘寸法’,
‘required’ => false,
));
[/php]
5.管理画面に追加
template/admin/Product/product.twig
[php]
{{ form_row(form.productsize) }}
[/php]
6.商品詳細にアウトプット
template/default/Product/detail.twig
[php]
{{ Product.productsize }}
[/php]
検索項目に追加
1.ブロックタイプに追加
src/Eccube/Form/Type/SearchProductBlockType.php
に
[php]
$builder->add(‘productsize’, ‘text’, array(
‘required’ => false,
‘empty_data’ => null,
‘attr’ => array(
‘maxlength’ => 50,
),
));
[/php]
を追加。
2.ブロックタイプのフォームに検索項目を増やす
app/template/test/Block/search_product.twigに追加
[php]
{{ form_widget(form.productsize, {‘attr’: { ‘placeholder’ : "寸法" }} ) }}
[/php]
3.検索ロジックの追加
src/Eccube/Repository/ProductRepository.phpに追加
public function getQueryBuilderBySearchData($searchData)の中
[php]
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") . ‘%’);
}
[/php]
上記の方法で、一応、英数字は半角全角どちらでもヒットするようになっています。
4.$searchDataに追加
src/Eccube/Form/Type/SearchProductType.php
の「public function buildForm(FormBuilderInterface $builder, array $options)」に
[php]
$builder->add(‘productsize’, ‘text’, array(
‘required’ => false,
‘empty_data’ => null,
‘attr’ => array(
‘maxlength’ => 50,
),
));
[/php]
を追加。
とりあえず、「テキスト」はできそう。「checkbox」とか「select」とかは研究しないといけません。
コメントを残す