app/Plugin/SeEnquete4/Controller/EnqueteController.php line 155

Open in your IDE?
  1. <?php
  2. /*
  3.  * Copyright(c) 2020 Shadow Enterprise, Inc. All rights reserved.
  4.  * http://www.shadow-ep.co.jp/
  5.  */
  6. namespace Plugin\SeEnquete4\Controller;
  7. use Eccube\Common\Constant;
  8. use Eccube\Controller\AbstractController;
  9. use Eccube\Repository\BaseInfoRepository;
  10. use Knp\Bundle\PaginatorBundle\Pagination\SlidingPagination;
  11. use Knp\Component\Pager\Paginator;
  12. use Plugin\SeEnquete4\Entity\EnqueteUser;
  13. use Plugin\SeEnquete4\Form\Type\EnqueteType;
  14. use Plugin\SeEnquete4\Repository\EnqueteRepository;
  15. use Plugin\SeEnquete4\Repository\EnqueteConfigRepository;
  16. use Plugin\SeEnquete4\Repository\EnqueteItemRepository;
  17. use Plugin\SeEnquete4\Repository\EnqueteMetaRepository;
  18. use Plugin\SeEnquete4\Service\EnqueteMailService;
  19. use Plugin\SeEnquete4\Util\CommonUtil;
  20. use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
  21. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  22. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  23. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  24. use Symfony\Component\Form\Extension\Core\Type\HiddenType;
  25. use Symfony\Component\Form\Extension\Core\Type\TextType;
  26. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  27. use Symfony\Component\Form\FormError;
  28. use Symfony\Component\HttpFoundation\Request;
  29. use Symfony\Component\HttpFoundation\Response;
  30. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  31. use Symfony\Component\Routing\Annotation\Route;
  32. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  33. class EnqueteController extends AbstractController
  34. {
  35.     /**
  36.      * @var BaseInfo
  37.      */
  38.     public $BaseInfo;
  39.     /**
  40.      * @var \Swift_Mailer
  41.      */
  42.     protected $mailer;
  43.     /**
  44.      * @var EnqueteRepository
  45.      */
  46.     protected $enqueteRepository;
  47.     /**
  48.      * @var EnqueteConfigRepository
  49.      */
  50.     protected $enqueteConfigRepository;
  51.     /**
  52.      * @var EnqueteItemRepository
  53.      */
  54.     protected $enqueteItemRepository;
  55.     /**
  56.      * @var EnqueteMetaRepository
  57.      */
  58.     protected $enqueteMetaRepository;
  59.     /**
  60.      * @var EnqueteMailService
  61.      */
  62.     protected $enqueteMailService;
  63.     /*
  64.      * enqueteConfig
  65.      */
  66.     protected $enqueteConfig;
  67.     /**
  68.      * EnqueteController constructor.
  69.      *
  70.      * @param \Swift_Mailer $mailer
  71.      * @param BaseInfoRepository $baseInfoRepository
  72.      * @param EnqueteRepository $enqueteRepository
  73.      * @param EnqueteConfig $enqueteConfigRepository
  74.      * @param EnqueteItemRepository $enqueteItemRepository
  75.      * @param EnqueteMetaRepository $enqueteMetaRepository
  76.      * @param EnqueteMailService $enqueteMailService
  77.      */
  78.     public function __construct(
  79.         \Swift_Mailer $mailer,
  80.         BaseInfoRepository $baseInfoRepository,
  81.         EnqueteRepository $enqueteRepository,
  82.         EnqueteConfigRepository $enqueteConfigRepository,
  83.         EnqueteItemRepository $enqueteItemRepository,
  84.         EnqueteMetaRepository $enqueteMetaRepository,
  85.         EnqueteMailService $enqueteMailService
  86.     ) {
  87.         $this->mailer $mailer;
  88.         $this->BaseInfo $baseInfoRepository->get();
  89.         $this->enqueteRepository $enqueteRepository;
  90.         $this->enqueteConfigRepository $enqueteConfigRepository;
  91.         $this->enqueteItemRepository $enqueteItemRepository;
  92.         $this->enqueteMetaRepository $enqueteMetaRepository;
  93.         $this->enqueteMailService $enqueteMailService;
  94.         // 設定情報を取得
  95.         $this->enqueteConfig $this->enqueteConfigRepository->findBy( [], [ 'sort_no' => 'ASC' ] );
  96.     }
  97.     /**
  98.      * アンケート一覧画面
  99.      *
  100.      * @Route("/enquete/list", name="se_enquete_list")
  101.      * @Route("/enquete/list/{page}", name="se_enquete_list_page", requirements={"page" = "\d+"})
  102.      * @Template("@SeEnquete4/list.twig")
  103.      */
  104.     public function index(Request $request$page 1)
  105.     {
  106.         $now = new \DateTime(date("Y-m-d H:i:s"), new \DateTimeZone('Asia/Tokyo'));
  107.         $whereLists = [
  108.             'status' => 1,
  109.             'start_date' => [ '<='$now ],
  110.             'end_date' => [ '>'$now ],
  111.             'deleted' => 0
  112.         ];
  113.         // 会員でなければ会員専用は除外
  114.         if ( !$this->getUser() ) {
  115.             $whereLists'member_flg' ] = ;
  116.         }
  117.         $limit 0;
  118.         $offset 0;
  119.         $Collection $this->enqueteRepository->getFindCollection$whereLists, [ 'start_date' => 'DESC'], $limit$offset$to_camel_case=false$ucfirst=false );
  120.         return [
  121.             'Collection' => $Collection,
  122.         ];
  123.     }
  124.     /**
  125.      * アンケート詳細画面
  126.      *
  127.      * @Route("/enquete/detail/{id}", name="se_enquete_detail", requirements={"id" = "\d+"})
  128.      * @Template("@SeEnquete4/detail.twig")
  129.      *
  130.      * @param Request $request
  131.      *
  132.      * @return array
  133.      */
  134.     public function detail(Request $request$id null)
  135.     {
  136.         if ( !empty($id) && is_numeric($id) ) {
  137.             $now = new \DateTime(date("Y-m-d H:i:s"), new \DateTimeZone('Asia/Tokyo'));
  138.             $Collection $this->enqueteRepository->getFindCollection([
  139.                 'id' => $id,
  140.                 'status' => 1,
  141.                 'start_date' => [ '<='$now ],
  142.                 'end_date' => [ '>'$now ],
  143.                 'deleted' => 0
  144.             ], [], $limit=1$offset=0$to_camel_case=false$ucfirst=false );
  145.             $enqueteEntity = ( $Collection && isset($Collection[0]) ) ? $Collection[0] : [] ;
  146.         }
  147.         // アンケートがなければNotFound
  148.         if ( !isset($enqueteEntity) || !$enqueteEntity ) {
  149.             throw new NotFoundHttpException();
  150.         }
  151.         // 非会員が会員専用にアクセスしてきたらNotFound
  152.         if ( ( $enqueteEntity->getMemberFlg() == ) && ( !$this->getUser() ) ) {
  153.             throw new NotFoundHttpException();
  154.         }
  155.         // 設問情報を取得
  156.         $enqueteMetaEntities $this->enqueteMetaRepository->findBy([
  157.             'Enquete' => $enqueteEntity,
  158.             'deleted' => 0
  159.         ], [ 'sort_no' => 'ASC' ]);
  160.         // ページで使用するフォームの作成
  161.         $form $this->createForm(EnqueteType::class);
  162.         $keyList = [];
  163.         // データ登録時に使用できるように別配列へ id => title を格納する
  164.         $metaInfo $itemInfo = [];
  165.         // 必須のみ確認出来るように配列へ
  166.         $metaNessIds = [];
  167.         if ( $enqueteMetaEntities ) {
  168.             foreach ( $enqueteMetaEntities as $enqueteMetaEntity ) {
  169.                 $enqueteItemEntities $this->enqueteItemRepository->findBy([
  170.                     'EnqueteMeta' => $enqueteMetaEntity,
  171.                     'deleted' => 0,
  172.                 ], [ 'sort_no' => 'ASC' ]);
  173.                 // フォームを動的追加
  174.                 list($form$keyList) = $this->getAddForms($form$keyList$enqueteMetaEntity$enqueteItemEntities);
  175.                 $metaInfo$enqueteMetaEntity->getId() ] = $enqueteMetaEntity->getTitle() ;
  176.                 if ( $enqueteItemEntities ) {
  177.                     foreach ( $enqueteItemEntities as $enqueteItemEntity ) {
  178.                         $itemInfo$enqueteItemEntity->getId() ] = $enqueteItemEntity->getValues() ;
  179.                     }
  180.                 }
  181.                 if ( $enqueteMetaEntity->getNessFlg() == ) {
  182.                     $metaNessIds$enqueteMetaEntity->getId() ] = true;
  183.                 }
  184.             }
  185.         }
  186.         // 個人情報の取得が存在すればチェックボックスを追加する
  187.         if ( $enqueteEntity->getPersonalFlg() == ) {
  188.             $extraKey EnqueteType::_FORM_NAME_PREFIX_ .'personal';
  189.             // 個人情報の取扱い同意
  190.             $form->add($extraKeyCheckboxType::class, [
  191.                 'mapped' => false,
  192.                 'required' => true,
  193.                 'label' => ( $enqueteEntity->getPersonalTitle() ) ? $enqueteEntity->getPersonalTitle() : trans('se_enquete.common.message.agree', [ '%label%' => trans('se_enquete.admin.common.enquete_personal_text') ]),
  194.             ]);
  195.             $keyList[] = [
  196.                 'key' => $extraKey,
  197.                 //'label' => ( $enqueteEntity->getPersonalTitle() ) ? $enqueteEntity->getPersonalTitle() : trans('se_enquete.common.message.agree', [ '%label%' => trans('se_enquete.admin.common.enquete_personal_text') ]),
  198.                 'required' => true,
  199.             ];
  200.         }
  201.         // リクエストの内容をマージ
  202.         $form->handleRequest($request);
  203.         if ( $form->isSubmitted() && $form->isValid() ) {
  204.             // 自身のフォームの全てのフォームを取得
  205.             $formData  $request->request->get($form->getName());
  206.             // 閲覧時に参照しやすいように配列へ移す(管理側でFormを変更するとおかしくなるので現状のデータで保存する)
  207.             $userData = [];
  208.             foreach ( $formData as $key => $value ) {
  209.                 if ( substr($key0strlen(EnqueteType::_FORM_NAME_PREFIX_)) == EnqueteType::_FORM_NAME_PREFIX_ ) {
  210.                     $metaId substr($keystrlen(EnqueteType::_FORM_NAME_PREFIX_));
  211.                     if ( is_numeric($metaId) && isset($metaInfo[$metaId]) ) {
  212.                         if ( is_array($value) ) {
  213.                             $new_values = [];
  214.                             foreach ( $value as $vkey => $vvalue ) {
  215.                                 if ( isset($itemInfo[$vvalue]) ) {
  216.                                     $new_values[] = $itemInfo[$vvalue] ;
  217.                                 } else {
  218.                                     $new_values[] = $vvalue ;
  219.                                 }
  220.                             }
  221.                             $userData$metaInfo[$metaId] ] = $new_values ;
  222.                         } else {
  223.                             if ( isset($itemInfo[$value]) ) {
  224.                                 $userData$metaInfo[$metaId] ] = $itemInfo[$value] ;
  225.                             } else {
  226.                                 $userData$metaInfo[$metaId] ] = $value ;
  227.                             }
  228.                         }
  229.                         if ( isset($metaNessIds[$metaId]) ) unset( $metaNessIds[$metaId] ) ;
  230.                     } else
  231.                     if ( $metaId == 'personal' ) {
  232.                         $userDatatrans('se_enquete.common.label.personal_existance') ] = trans('se_enquete.common.label.agree');
  233.                     }
  234.                 }
  235.             }
  236.             // 必須配列が空で無ければ未入力項目が存在する
  237.             if ( isset($metaNessIds) && !empty($metaNessIds) ) {
  238.                 foreach ( $enqueteMetaEntities as $enqueteMetaEntity ) {
  239.                     if ( isset($metaNessIds[$enqueteMetaEntity->getId()]) ) {
  240.                         switch ( $enqueteMetaEntity->getEnqueteConfig()->getKeyword() ) {
  241.                             case 'pulldown':
  242.                             case 'radio':
  243.                             case 'check':
  244.                                 $message trans('se_enquete.common.message.nochoice', [ '%label%' => $enqueteMetaEntity->getTitle() ]);
  245.                                 break;
  246.                             default:
  247.                                 $message trans('se_enquete.common.message.empty', [ '%label%' => $enqueteMetaEntity->getTitle() ]);
  248.                                 break;
  249.                         }
  250.                         $form->getEnqueteType::_FORM_NAME_PREFIX_ .$enqueteMetaEntity->getId() )->addError( new FormError$message$message ) );
  251.                     }
  252.                 }
  253.             }
  254.             // エラーが無ければ登録
  255.             if ( count($form->getErrors(true)) < ) {
  256.                 $now = new \DateTime(date("Y-m-d H:i:s"), new \DateTimeZone('Asia/Tokyo'));
  257.                 $enqueteUserEntity = new EnqueteUser();
  258.                 $entityManager $this->getDoctrine()->getManager();
  259.                 $answer_flg false;
  260.                 try {
  261.                     $entityManager->beginTransaction();
  262.                     $enqueteUserEntity
  263.                         ->setEnquete$enqueteEntity )
  264.                         ->setAnswerJson$userData )
  265.                         ->setUserAgent$request->server->get('HTTP_USER_AGENT') )
  266.                         ->setIp$request->server->get('REMOTE_ADDR') )
  267.                         ->setCreateDate$now )
  268.                         ->setUpdateDate$now )
  269.                         ->setDeleted);
  270.                     $Customer $this->getUser();
  271.                     if ( $Customer ) {
  272.                         $enqueteUserEntity->setCustomerId$Customer->getId() );
  273.                     } else {
  274.                         $enqueteUserEntity->setCustomerId);
  275.                     }
  276.                     $entityManager->persist($enqueteUserEntity);
  277.                     $entityManager->flush();
  278.                     $answer_flg true;
  279.                     $entityManager->commit();
  280.                 } catch ( Exception $e ) {
  281.                     $entityManager->rollback();
  282.                 }
  283.                 // 正常完了の場合で担当者メール送信フラグがあればメールを送信する
  284.                 if ( $answer_flg && ( $enqueteEntity->getMailFlg() == ) && ( $enqueteEntity->getAddressList() != '' ) ) {
  285.                     // 回答の旨メール送信開始
  286.                     $result $this->enqueteMailService->sendEnqueteManageMail$enqueteEntity->getId() );
  287.                 }
  288.                 // // DB登録の有無に関わらず完了ページへ遷移させる
  289.                 // return $this->redirectToRoute('se_enquete_complete');
  290.                 // 退会アンケート送信後は退会手続きへ
  291.                 if($id == 2){
  292.                   // DB登録の有無に関わらず完了ページへ遷移させる
  293.                   return $this->redirectToRoute('mypage_withdraw', ['withdraw_sheet' => true]);
  294.                 } else {
  295.                   // DB登録の有無に関わらず完了ページへ遷移させる
  296.                   return $this->redirectToRoute('se_enquete_complete');
  297.                 }
  298.             }
  299.         }
  300.         return [
  301.             'form' => $form->createView(),
  302.             'keyList' => $keyList,
  303.             'Enquete' => $enqueteEntity,
  304.             'personaliCheckKey' => ( isset($extraKey) ) ? $extraKey '',
  305.         ];
  306.     }
  307.     /**
  308.      * アンケート完了画面
  309.      *
  310.      * @Route("/enquete/complete", name="se_enquete_complete")
  311.      * @Template("@SeEnquete4/complete.twig")
  312.      */
  313.     public function complete(Request $request)
  314.     {
  315.         return [];
  316.     }
  317.     /**
  318.      * アンケートブロック取得
  319.      *
  320.      * @return \Symfony\Component\HttpFoundation\JsonResponse
  321.      * @Route("/enquete/block/{id}", name="se_enquete_block", requirements={"id" = "\d+"})
  322.      *   return json
  323.      */
  324.     public function block(Request $request$id)
  325.     {
  326.         $output = [ 'status' => false ];
  327.         if ( !empty($id) && is_numeric($id) ) {
  328.             $now = new \DateTime(date("Y-m-d H:i:s"), new \DateTimeZone('Asia/Tokyo'));
  329.             $Collection $this->enqueteRepository->getFindCollection([
  330.                 'id' => $id,
  331.                 'status' => 1,
  332.                 'start_date' => [ '<='$now ],
  333.                 'end_date' => [ '>'$now ],
  334.                 'deleted' => 0
  335.             ], [], $limit=1$offset=0$to_camel_case=false$ucfirst=false );
  336.             $enqueteEntity = ( $Collection && isset($Collection[0]) ) ? $Collection[0] : [] ;
  337.         }
  338.         // 情報なし
  339.         if ( !isset($enqueteEntity) || !$enqueteEntity ) {
  340.             return $this->json($output);
  341.         }
  342.         // 会員専用
  343.         if ( ( $enqueteEntity->getMemberFlg() == ) && ( !$this->getUser() ) ) {
  344.             return $this->json($output);
  345.         }
  346.         // 画像の有無
  347.         if ( $enqueteEntity->getThumbnail() ) {
  348.             $uploadDir $this->get('kernel')->getProjectDir() . '/' .$this->eccubeConfig['Se_Enquete_img_upload_dir'];
  349.             if ( file_exists$uploadDir .$enqueteEntity->getThumbnail() ) ) {
  350.                 $imageSize getimagesize$uploadDir .$enqueteEntity->getThumbnail() );
  351.                 $thumbnail '/' .$this->eccubeConfig['Se_Enquete_img_upload_dir'] .$enqueteEntity->getThumbnail();
  352.             }
  353.         }
  354.         $genetareUrl $this->generateUrl('se_enquete_detail', [ 'id' => $enqueteEntity->getId() ]);
  355.         // HTMLタグの構成
  356.         $returnHtml '';
  357.         $returnHtml .= '<a href="' .$genetareUrl .'">';
  358.         if ( isset($thumbnail) ) {
  359.           $baseStyle 'max-width:' .$imageSize[0] .'px; max-height:' .$imageSize[1] .'px; width: 100%;';
  360.           $returnHtml .= '<p class="enquete-list-img"><img src="' .$thumbnail .'" style="' .$baseStyle .'" alt="' .str_replace('"'''$enqueteEntity->getTitle() ) .'"/></p>';
  361.         } else {
  362.           $returnHtml .= '<p class="enquete-list-title">' .$enqueteEntity->getTitle() .'</p>';
  363.         }
  364.         $returnHtml .= '</a>';
  365.         if ( $enqueteEntity->getSubTitle() ) {
  366.             $returnHtml .= '<span class="enquete-list-catch">' .$enqueteEntity->getSubTitle() .'</span>';
  367.         }
  368.         if ( $enqueteEntity->getStartDate() ) {
  369.             $returnHtml .= '<div class="col text-right enquete-list-term">';
  370.             $returnHtml .= $enqueteEntity->getStartDate()->format('Y/m/d') .' 〜 ';
  371.             if ( $enqueteEntity->getEndDate() ) {
  372.                 $returnHtml .= $enqueteEntity->getEndDate()->format('Y/m/d');
  373.             }
  374.             $returnHtml .= '</div>';
  375.         }
  376.         $output = [
  377.             'status' => true,
  378.             'html' => $returnHtml
  379.         ];
  380.         return $this->json($output);
  381.     }
  382.     /*
  383.      * アンケート用のフォームを動的に生成する
  384.      *  key命名規則 : prefix + metaId
  385.      */
  386.     private function getAddForms$form$keyList=[], $enqueteMetaEntity=[], $enqueteItemEntities=[] ) // {{{
  387.     {
  388.         $keyPrefix EnqueteType::_FORM_NAME_PREFIX_;
  389.         $childList = [];
  390.         if ( $enqueteItemEntities ) {
  391.             foreach ( $enqueteItemEntities as $enqueteItemEntity ) {
  392.                 //$childList[] = [
  393.                 //    $enqueteItemEntity->getValues() => $enqueteItemEntity->getId(),
  394.                 //];
  395.                 $childList[$enqueteItemEntity->getValues()] = $enqueteItemEntity->getId();
  396.             }
  397.         }
  398.         $form_add_flg true;
  399.         switch ( $enqueteMetaEntity->getEnqueteConfig()->getKeyword() ) {
  400.             case 'text':
  401.                 $form
  402.                     ->add($keyPrefix .$enqueteMetaEntity->getId(), TextType::class, [
  403.                         //'mapped' => false,
  404.                         'label' => $enqueteMetaEntity->getTitle(),
  405.                         'required' => ( $enqueteMetaEntity->getNessFlg() == ) ? true false,
  406.                         'attr' => [
  407.                             'placeholder' => $enqueteMetaEntity->getPlaceholder(),
  408.                             'class' => 'enquete-form-'.$enqueteMetaEntity->getEnqueteConfig()->getKeyword(),
  409.                         ],
  410.                     ]);
  411.                 break;
  412.             case 'textarea':
  413.                 $form
  414.                     ->add($keyPrefix .$enqueteMetaEntity->getId(), TextareaType::class, [
  415.                         //'mapped' => false,
  416.                         'label' => $enqueteMetaEntity->getTitle(),
  417.                         'required' => ( $enqueteMetaEntity->getNessFlg() == ) ? true false,
  418.                         'attr' => [
  419.                             'placeholder' => $enqueteMetaEntity->getPlaceholder(),
  420.                             'class' => 'enquete-form-'.$enqueteMetaEntity->getEnqueteConfig()->getKeyword(),
  421.                         ],
  422.                     ]);
  423.                 break;
  424.             case 'pulldown':
  425.                 // 文字列の長さからフォームのクラスを指定する
  426.                 $max_length 0;
  427.                 foreach ( $childList as $ckey => $cvalue ) {
  428.                     if ( mb_strlen($ckey) > $max_length $max_length mb_strlen($ckey) ;
  429.                 }
  430.                 $add_class '';
  431.                 if ( $max_length <= 11 ) { $add_class .= ' mw-2'; }
  432.                 else if ( $max_length <= 25 ) { $add_class .= ' mw-4'; }
  433.                 else if ( $max_length <= 40 ) { $add_class .= ' mw-6'; }
  434.                 else if ( $max_length <= 54 ) { $add_class .= ' mw-8'; }
  435.                 $form
  436.                     ->add($keyPrefix .$enqueteMetaEntity->getId(), ChoiceType::class, [
  437.                         //'mapped' => false,
  438.                         'label' => $enqueteMetaEntity->getTitle(),
  439.                         'required' => ( $enqueteMetaEntity->getNessFlg() == ) ? true false,
  440.                         'choices' => $childList,
  441.                         'expanded' => false,
  442.                         'multiple' => false,
  443.                         //'data' => $childList[array_key_first($childList)],
  444.                         'placeholder' => '----',
  445.                         'attr' => [
  446.                             'class' => 'enquete-form-'.$enqueteMetaEntity->getEnqueteConfig()->getKeyword() .$add_class
  447.                         ],
  448.                     ]);
  449.                 break;
  450.             case 'radio':
  451.                 $form
  452.                     ->add($keyPrefix .$enqueteMetaEntity->getId(), ChoiceType::class, [
  453.                         //'mapped' => false,
  454.                         'label' => $enqueteMetaEntity->getTitle(),
  455.                         'required' => ( $enqueteMetaEntity->getNessFlg() == ) ? true false,
  456.                         'choices' => $childList,
  457.                         'expanded' => true,
  458.                         'multiple' => false,
  459.                         //'data' => $childList[array_key_first($childList)],
  460.                         'placeholder' => false,
  461.                         'attr' => [
  462.                             'class' => 'check-thumbnail enquete-form-'.$enqueteMetaEntity->getEnqueteConfig()->getKeyword()
  463.                         ],
  464.                     ]);
  465.                 break;
  466.             case 'check':
  467.                 $form
  468.                     ->add($keyPrefix .$enqueteMetaEntity->getId(), ChoiceType::class, [
  469.                         //'mapped' => false,
  470.                         'label' => $enqueteMetaEntity->getTitle(),
  471.                         'required' => ( $enqueteMetaEntity->getNessFlg() == ) ? true false,
  472.                         'choices' => $childList,
  473.                         'expanded' => true,
  474.                         'multiple' => true,
  475.                         //'data' => $childList[array_key_first($childList)],
  476.                         'placeholder' => false,
  477.                         'attr' => [
  478.                             'class' => 'enquete-form-'.$enqueteMetaEntity->getEnqueteConfig()->getKeyword()
  479.                         ],
  480.                     ]);
  481.                 break;
  482.             case 'etc':
  483.                 $form_add_flg false;
  484.                 // イレギュラー(フォームなし)
  485.                 $keyList[] = [
  486.                     'text' => $enqueteMetaEntity->getText(),
  487.                 ];
  488.                 break;
  489.             default:
  490.                 $form_add_flg false;
  491.                 break;
  492.         }
  493.         if ( $form_add_flg ) {
  494.             $keyList[] = [
  495.                 'key' => $keyPrefix .$enqueteMetaEntity->getId(),
  496.                 'label' => $enqueteMetaEntity->getTitle(),
  497.                 'required' => ( $enqueteMetaEntity->getNessFlg() == ) ? true false,
  498.             ];
  499.         }
  500.         return [ $form$keyList ];
  501.     } // }}}
  502. }