<?php
namespace Customize\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\Routing\Annotation\Route;
// 追加
use Eccube\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Customize\Repository\VisualRepository;
use Customize\Repository\ProductRepository;
use Customize\Repository\CategoryRepository;
use Customize\Repository\OrderItemRepository;
use Eccube\Form\Type\SearchProductType;
class BookcartController extends AbstractController
{
protected $categoryRepository;
protected $visualRepository;
protected $productRepository;
protected $orderItemRepository;
public function __construct(
OrderItemRepository $orderItemRepository,
CategoryRepository $categoryRepository,
VisualRepository $visualRepository,
ProductRepository $productRepository
) {
$this->orderItemRepository = $orderItemRepository;
$this->categoryRepository = $categoryRepository;
$this->visualRepository = $visualRepository;
$this->productRepository = $productRepository;
}
/**
* @Route("/bookcart", name="bookcart")
* @Template("Bookcart/index.twig")
*/
public function index(Request $request)
{
// searchForm
/* @var $builder \Symfony\Component\Form\FormBuilderInterface */
$builder = $this->formFactory->createNamedBuilder('', SearchProductType::class);
$searchForm = $builder->getForm();
// BookCartメインビジュアル
$BookCartMainVisual = $this->visualRepository->find(1);
// BookCartバナー
$BookCartBanner = $this->visualRepository->find(2);
// 新着情報:雑誌&MOOK
$Categories = array();
$CategoryIds = [35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83];
foreach($CategoryIds as $categoryId){
$Categories[] = $this->categoryRepository->find($categoryId);
}
$NewsList1 = $this->productRepository->getNewListByCategories($Categories, 5);
// 新着情報:書籍紹介
$Categories = array();
$CategoryIds = [155,154,153,152,151,150,149,148,147,146,145,144,143,142,141,140,139,138,137,136,135,134,322,311,310,309,307,306,305,290,289,324,288,287,286,285,284,321,320,319,314,313,312,308,304,323,247,300,301,302,303];
foreach($CategoryIds as $categoryId){
$Categories[] = $this->categoryRepository->find($categoryId);
}
$NewsList2 = $this->productRepository->getNewListByCategories($Categories, 5);
// 新着情報:カード&メモラビリア
$Categories = array();
$CategoryIds = [250,130,100,99,98,97,96,95,94,93,92,91,90,89,88,87,86,85,84];
foreach($CategoryIds as $categoryId){
$Categories[] = $this->categoryRepository->find($categoryId);
}
$NewsList3 = $this->productRepository->getNewListByCategories($Categories, 5);
// おすすめ商品
$RecommendList = $this->productRepository->getRecommendList();
// 売れている商品
$RankingList_array = $this->orderItemRepository->getRankingList(20, 8);
$RankingList = array();
foreach ($RankingList_array as $Product) {
$RankingList[] = $this->productRepository->find($Product['product_id']);
}
// メニュー用カテゴリー一覧
$Cate1st = $this->categoryRepository->findOneBy(['id' => 1]);
$sortedChildren = $Cate1st ? $Cate1st->getChildren()->toArray() : [];
usort($sortedChildren, function($a, $b) { // sort_no 昇順でソート
return $a->getSortNo() <=> $b->getSortNo();
});
return [
'search_form' => $searchForm->createView(),
'BookCartMainVisual' => $BookCartMainVisual,
'BookCartBanner' => $BookCartBanner,
'NewsList1' => $NewsList1,
'NewsList2' => $NewsList2,
'NewsList3' => $NewsList3,
'RecommendList' => $RecommendList,
'RankingList' => $RankingList,
'sortedChildren' => $sortedChildren,
];
}
}