app/Customize/Form/Extension/SearchProductExtension.php line 90

Open in your IDE?
  1. <?php
  2. namespace Customize\Form\Extension;
  3. use Eccube\Form\Type\SearchProductType;
  4. use Symfony\Component\Form\AbstractTypeExtension;
  5. use Symfony\Component\Form\Extension\Core\Type\NumberType;
  6. use Symfony\Component\Form\FormBuilderInterface;
  7. use Symfony\Component\Validator\Constraints\NotBlank;
  8. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  9. use Eccube\Repository\CategoryRepository;
  10. use Customize\Repository\MakerRepository;
  11. use Customize\Repository\VehicleModelRepository;
  12. use Customize\Repository\YearModelRepository;
  13. use Customize\Repository\BrandRepository;
  14. use Eccube\Entity\Category;
  15. use Customize\Entity\Maker;
  16. use Customize\Entity\VehicleModel;
  17. use Customize\Entity\YearModel;
  18. use Customize\Entity\Brand;
  19. class SearchProductExtension extends AbstractTypeExtension
  20. {
  21.     /**
  22.      * {@inheritdoc}
  23.      */
  24.     /**
  25.      * @var MakerRepository
  26.      */
  27.     protected $makerRepository;
  28.     /**
  29.      * @var VehicleModelRepository
  30.      */
  31.     protected $vehicleModelRepository;
  32.     /**
  33.      * @var YearModelRepository
  34.      */
  35.     protected $yearModelRepository;
  36.     /**
  37.      * @var BrandRepository
  38.      */
  39.     protected $brandRepository;
  40.     /**
  41.      * @var CategoryRepository
  42.      */
  43.     protected $categoryRepository;
  44.     /**
  45.      * ProductType constructor.
  46.      *
  47.      * @param MakerRepository $makerRepository
  48.      * @param VehicleModelRepository $vehicleModelRepository
  49.      * @param YearModelRepository $yearModelRepository
  50.      * @param BrandRepository $brandRepository
  51.      * @param CategoryRepository $categoryRepository
  52.      */
  53.     public function __construct(
  54.         MakerRepository $makerRepository,
  55.         VehicleModelRepository $vehicleModelRepository,
  56.         YearModelRepository $yearModelRepository,
  57.         BrandRepository $brandRepository,
  58.         CategoryRepository $categoryRepository
  59.     ) {
  60.         $this->makerRepository $makerRepository;
  61.         $this->vehicleModelRepository $vehicleModelRepository;
  62.         $this->yearModelRepository $yearModelRepository;
  63.         $this->brandRepository $brandRepository;
  64.         $this->categoryRepository $categoryRepository;
  65.     }
  66.     public function buildForm(FormBuilderInterface $builder, array $options)
  67.     {
  68.         $builder
  69.             #メーカー
  70.             ->add('maker_id'ChoiceType::class, [
  71.                 'choice_label' => 'Name',
  72.                 'choices' => $this->makerRepository->getList(nulltrue),
  73.                 'choice_value' => function (Maker $Maker null) {
  74.                     return $Maker $Maker->getId() : null;
  75.                 },
  76.             ])
  77.             #VehicleModel
  78.             ->add('vehicle_model_id'ChoiceType::class, [
  79.                 'choice_label' => 'Name',
  80.                 'choices' => $this->vehicleModelRepository->getList(),
  81.                 'choice_value' => function (VehicleModel $VehicleModel null) {
  82.                     return $VehicleModel $VehicleModel->getId() : null;
  83.                 },
  84.             ])
  85.             #YearModel
  86.             ->add('year_model_id'ChoiceType::class, [
  87.                 'choice_label' => 'Name',
  88.                 'choices' => $this->yearModelRepository->getList(),
  89.                 'choice_value' => function (YearModel $YearModel null) {
  90.                     return $YearModel $YearModel->getId() : null;
  91.                 },
  92.             ])
  93.             #Brand
  94.             ->add('brand_id'ChoiceType::class, [
  95.                 'choice_label' => 'Name',
  96.                 'multiple' => true,
  97.                 'choices' => $this->brandRepository->getList(),
  98.                 'choice_value' => function (Brand $Brand null) {
  99.                     return $Brand $Brand->getId() : null;
  100.                 },
  101.             ])
  102.             #Category
  103.             ->add('category_id'ChoiceType::class, [
  104.                 'choice_label' => 'Name',
  105.                 'multiple' => true,
  106.                 'choices' => $this->categoryRepository->getList(nulltrue),
  107.                 'choice_value' => function (Category $Category null) {
  108.                     return $Category $Category->getId() : null;
  109.                 },
  110.             ])
  111.             ;
  112.     }
  113.     
  114.     /**
  115.      * {@inheritdoc}
  116.      */
  117.     public static function getExtendedTypes(): iterable
  118.     {
  119.         return [SearchProductType::class];
  120.     }
  121. }