6:タグIDで絞り込み

4月 10, 2021


タグIDで商品一覧を絞り込めるようにする

URLにパラメーター「tag_id=1」を加えて表示を可能にする。

app/Customize/Form/Extension/ のディレクトリに SearchProductTypeExtension.php を作成
(FTPからCostomizeに移動、Form以下がなかったのでForm>Extensionのフォルダを作成)

app/Customize/Form/Extension/SearchProductTypeExtension.php の中身
___________________________
<?php
namespace Customize\Form\Extension;
 
use Eccube\Form\Type\SearchProductType;
use Symfony\Component\Form\AbstractTypeExtension;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\FormBuilderInterface;
 
class SearchProductTypeExtension extends AbstractTypeExtension
     /**
     * {@inheritdoc}
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('tag_id', HiddenType::class, []);
    }

    /**
     * {@inheritdoc}
     */
    public function getExtendedType()
    {
        return SearchProductType::class;
    }
}
___________________________


app/Customize/Repository ディレクトリに TagIdSearchCustomizer.phpを作成
(FTPからCustomizeに移動、Repositoryがなかったのでフォルダを作成)

app/Customize/Repository/TagIdSearchCustomizer.php の中身
___________________________
<?php

namespace Customize\Repository;

use Eccube\Doctrine\Query\QueryCustomizer;
use Eccube\Repository\QueryKey;
use Doctrine\ORM\QueryBuilder;

/**
 *
 */
class TagIdSearchCustomizer implements QueryCustomizer {

    /**
     * 検索のパラメータにtag_idを追加
     */
    public function customize(QueryBuilder $builder, $params, $queryKey)
    {
        if (!empty($params['tag_id']) && $params['tag_id']) {
            $builder->innerJoin('p.ProductTag', 'pt');
            $builder->andWhere('pt = :tag_id');
            $builder->setParameter('tag_id', $params['tag_id']);
        }
    }
    
    public static function getExtendedTypes(): iterable
    {
        return [EntryType::class];
    }
}
___________________________

上記2つのファイルを設置すればタグIDでのパラメータで絞り込みが可能になりました。
https://ドメイン名/ec/products/list?&tag_id=3
にアクセス、デフォルトの「限定品」のタグの商品のみが表示されました。

参考リンク:

参考リンク:


You Might Also Like

0 コメント

Popular Posts

About Me

Flickr Images