lib/HanabusaBundle/src/Form/EventSubscriber/IntegerToBoolSubscriber.php line 44

Open in your IDE?
  1. <?php
  2. namespace Kzl\HanabusaBundle\Form\EventSubscriber;
  3. use Symfony\Component\Form\FormEvent;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. use Symfony\Component\Form\FormEvents;
  6. use Kzl\HanabusaBundle\Tools\ToolString;
  7. /**
  8.  * Intの入力値をbooleanへ変換するクラス
  9.  * ラジオボタンをtrue or false で使いたい場合に使用する。
  10.  * @author kawaguchi@kuzilla.co.jp
  11.  */
  12. class IntegerToBoolSubscriber implements EventSubscriberInterface
  13. {
  14.     /**
  15.      * このイベントを結びつけるプロパティ名
  16.      * @var string
  17.      */
  18.     private $property '';
  19.     /**TODO tsuruta いったんコメントアウト
  20.      * コンストラクタ
  21.      * @param string $property プロパティ名
  22.      */
  23.     // public function __construct(string $property)
  24.     // {
  25.     //     $this->property = $property;
  26.     // }
  27.     
  28.     /**
  29.      * {@inheritdoc}
  30.      */
  31.     public static function getSubscribedEvents()
  32.     {
  33.         // ディスパッチャに form.pre_set_data イベントをリッスンして
  34.         // preSetData メソッドが呼ばれるように伝えます
  35.         return array(
  36.             FormEvents::PRE_SET_DATA => 'setData'
  37.         );
  38.     }
  39.     
  40.     public function setData(FormEvent $event)
  41.     {
  42.         $data $event->getData();
  43.         if(null === $data) {
  44.             return;
  45.         }
  46.         // ゲッター・セッター文字列
  47.         $getter 'get'.ToolString::camelize($this->property);
  48.         $setter 'set'.ToolString::camelize($this->property);
  49.         if(is_bool($data->$getter()))
  50.         {
  51.             return;
  52.         }
  53.         $data->$setter($data->$getter() ? true false);
  54.         $event->setData($data);
  55.     }
  56. }