Eccube\Form\Type\Admin\ProductClassType::buildForm PHP Метод

buildForm() публичный Метод

public buildForm ( Symfony\Component\Form\FormBuilderInterface $builder, array $options )
$builder Symfony\Component\Form\FormBuilderInterface
$options array
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $app = $this->app;
        $builder->add('code', 'text', array('label' => '商品コード', 'required' => false))->add('stock', 'number', array('label' => '在庫数', 'required' => false, 'constraints' => array(new Assert\Regex(array('pattern' => "/^\\d+\$/u", 'message' => 'form.type.numeric.invalid')))))->add('sale_limit', 'number', array('label' => '販売制限数', 'required' => false, 'constraints' => array(new Assert\Length(array('max' => 10)), new Assert\Regex(array('pattern' => "/^\\d+\$/u", 'message' => 'form.type.numeric.invalid')))))->add('price01', 'money', array('label' => '通常価格', 'currency' => 'JPY', 'precision' => 0, 'required' => false, 'constraints' => array(new Assert\Length(array('max' => 10)), new Assert\Regex(array('pattern' => "/^\\d+\$/u", 'message' => 'form.type.numeric.invalid')))))->add('price02', 'money', array('label' => '販売価格', 'currency' => 'JPY', 'precision' => 0, 'constraints' => array(new Assert\NotBlank(), new Assert\Length(array('max' => 10)), new Assert\Regex(array('pattern' => "/^\\d+\$/u", 'message' => 'form.type.numeric.invalid')))))->add('tax_rate', 'text', array('label' => '消費税率', 'required' => false, 'constraints' => array(new Assert\Range(array('min' => 0, 'max' => 100)), new Assert\Regex(array('pattern' => "/^\\d+(\\.\\d+)?\$/", 'message' => 'form.type.float.invalid')))))->add('delivery_fee', 'money', array('label' => '商品送料', 'currency' => 'JPY', 'precision' => 0, 'required' => false, 'constraints' => array(new Assert\Regex(array('pattern' => "/^\\d+\$/u", 'message' => 'form.type.numeric.invalid')))))->add('product_type', 'product_type', array('label' => '商品種別', 'multiple' => false, 'expanded' => false, 'constraints' => array(new Assert\NotBlank())))->add('delivery_date', 'delivery_date', array('label' => 'お届け可能日', 'required' => false, 'empty_value' => '指定なし'))->add('add', 'checkbox', array('label' => false, 'required' => false, 'value' => 1))->addEventListener(FormEvents::POST_SUBMIT, function ($event) {
            $form = $event->getForm();
            $data = $form->getData();
            if (empty($data['stock_unlimited']) && is_null($data['stock'])) {
                $form['stock_unlimited']->addError(new FormError('在庫数を入力、もしくは在庫無制限を設定してください。'));
            }
        });
        $transformer = new DataTransformer\IntegerToBooleanTransformer();
        $builder->add($builder->create('stock_unlimited', 'checkbox', array('label' => '無制限', 'value' => '1', 'required' => false))->addModelTransformer($transformer));
        $transformer = new DataTransformer\EntityToIdTransformer($app['orm.em'], '\\Eccube\\Entity\\ClassCategory');
        $builder->add($builder->create('ClassCategory1', 'hidden')->addModelTransformer($transformer))->add($builder->create('ClassCategory2', 'hidden')->addModelTransformer($transformer));
    }