目的
マーケットプレイス型ECのように、管理メンバーごとの商品管理・受注管理をできるようにカスタマイズしていきます。
主にカスタマイズする場所は下記です。
・商品管理
・受注管理
方針
メンバーに割り当てられているcreator_idを活用します。
今回すること
・管理メンバー毎にそれぞれ設定した商品タグしか表示されないようにします。
管理メンバーがそれぞれ設定した商品タグしか表示されないようにします。
tagにcreator_idを付与
app/Customize/Entity/TagTrait.php
<?php
namespace Customize\Entity;
use Doctrine\ORM\Mapping as ORM;
use Eccube\Annotation\EntityExtension;
/**
* @EntityExtension("Eccube\Entity\Tag")
*/
trait TagTrait
{
/**
* @ORM\Column(type="string", nullable=true)
*/
public $creator_id;
}
・タグ保存時にcreator_idを付与
・タグ取得時はcreator_idが一致するもののみ取得
app/Customize/Repository/CreatorTagRepository.php
+use Eccube\Entity\AbstractEntity;
+use Eccube\Repository\AbstractRepository;
+use Eccube\Entity\Member;
+use Eccube\Entity\Master\Authority;
+use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
class TagRepository extends AbstractRepository
{
- public function __construct(RegistryInterface $registry)
- {
+
+ /**
+ * @var TokenStorageInterface
+ */
+ protected $tokenStorage;
+
+ /**
+ * TagRepository constructor.
+ *
+ * @param RegistryInterface $registry
+ * @param TokenStorageInterface $tokenStorage
+ * @param AuthorizationCheckerInterface $authorizationChecker
+ */
+ public function __construct(
+ RegistryInterface $registry,
+ TokenStorageInterface $tokenStorage
+ ) {
parent::__construct($registry, Tag::class);
+ $this->tokenStorage = $tokenStorage;
}
・・・
・・・
+ if (null !== $token = $this->tokenStorage->getToken()) {
+ if($token->getUser()->getAuthority()->getId() != Authority::ADMIN) {
+ $tag->creator_id = $token->getUser()->getCreator()->getId();
+ }
+ }
$em = $this->getEntityManager();
$em->persist($tag);
$em->flush($tag);
・・・
・・・
public function getList()
{
- $qb = $this->createQueryBuilder('t')->orderBy('t.sort_no', 'DESC');
- return $qb->getQuery()->getResult();
+ $qb = $this->createQueryBuilder('t');
+
+ if (null !== $token = $this->tokenStorage->getToken()) {
+ if($token->getUser() instanceof Member) {
+ if($token->getUser()->getAuthority()->getId() != Authority::ADMIN) {
+ $qb = $qb
+ ->andWhere('t.creator_id = :creator_id')
+ ->setParameter('creator_id', $token->getUser()->getCreator()->getId())
+ ->orderBy('t.sort_no', 'ASC');
+ }
+ }
+ }
+
+ return $qb->getQuery()->getResult();
}
宣伝
ハンドメイド猫グッズ専門ショップを運営しています。
ネコ好きの方、親しい間柄にネコ好きがいらっしゃる方、ぜひご覧ください。
■キャットギフト
https://cat-gift.net/