Eccube\Form\Type\Admin\OrderDetailType::buildForm PHP Method

buildForm() public method

public buildForm ( Symfony\Component\Form\FormBuilderInterface $builder, array $options )
$builder Symfony\Component\Form\FormBuilderInterface
$options array
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $config = $this->app['config'];
        $builder->add('new', 'hidden', array('required' => false, 'mapped' => false, 'data' => 1))->add('price', 'money', array('currency' => 'JPY', 'precision' => 0, 'constraints' => array(new Assert\NotBlank(), new Assert\Length(array('max' => $config['int_len'])))))->add('quantity', 'text', array('constraints' => array(new Assert\NotBlank(), new Assert\Length(array('max' => $config['int_len'])), new Assert\Regex(array('pattern' => "/^\\d+\$/u", 'message' => 'form.type.numeric.invalid')))))->add('tax_rate', 'text', array('constraints' => array(new Assert\NotBlank(), new Assert\Length(array('max' => $config['int_len'])), new Assert\Regex(array('pattern' => "/^\\d+(\\.\\d+)?\$/u", 'message' => 'form.type.float.invalid')))));
        $builder->add($builder->create('Product', 'hidden')->addModelTransformer(new DataTransformer\EntityToIdTransformer($this->app['orm.em'], '\\Eccube\\Entity\\Product')))->add($builder->create('ProductClass', 'hidden')->addModelTransformer(new DataTransformer\EntityToIdTransformer($this->app['orm.em'], '\\Eccube\\Entity\\ProductClass')));
        $app = $this->app;
        $builder->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) use($app) {
            // モーダルからのPOST時に、金額等をセットする.
            if ('modal' === $app['request']->get('modal')) {
                $data = $event->getData();
                // 新規明細行の場合にセット.
                if (isset($data['new'])) {
                    $ProductClass = $app['eccube.repository.product_class']->find($data['ProductClass']);
                    $Product = $ProductClass->getProduct();
                    $TaxRule = $app['eccube.repository.tax_rule']->getByRule($Product, $ProductClass);
                    $data['price'] = $ProductClass->getPrice02();
                    $data['quantity'] = empty($data['quantity']) ? 1 : $data['quantity'];
                    $data['tax_rate'] = $TaxRule->getTaxRate();
                    $event->setData($data);
                }
            }
        });
    }