src/Form/Web/Order/OrderType.php line 71
<?phpnamespace App\Form\Web\Order;use App\Entity\Catalogue\Option;use App\Entity\Catalogue\Product;use App\Entity\Order\Order;use App\Facade\Order\OrderDTO;use Doctrine\ORM\EntityRepository;use Doctrine\ORM\QueryBuilder;use Symfony\Bridge\Doctrine\Form\Type\EntityType;use Symfony\Component\Form\AbstractType;use Symfony\Component\Form\Extension\Core\Type\ChoiceType;use Symfony\Component\Form\Extension\Core\Type\TextareaType;use Symfony\Component\Form\Extension\Core\Type\TextType;use Symfony\Component\Form\FormBuilderInterface;use Symfony\Component\OptionsResolver\OptionsResolver;use Symfony\Component\Validator\Constraints\NotBlank;class OrderType extends AbstractType{public function buildForm(FormBuilderInterface $builder, array $options){$builder->add('customerName', TextType::class, ['required' => true,'constraints' => [new NotBlank,],'label' => 'Jméno a příjmení','attr' => ['placeholder' => 'Zadejte jméno a příjmení']])->add('customerEmail', TextType::class, ['required' => true,'constraints' => [new NotBlank,],'label' => 'E-mailová adresa','attr' => ['placeholder' => 'Zadejte e-mailovou adresu']])->add('customerPhone', TextType::class, ['required' => true,'constraints' => [new NotBlank,],'label' => 'Telefon','attr' => ['placeholder' => 'Zadejte telefonní číslo']])->add('message', TextareaType::class, ['required' => false,'label' => 'Zpráva','attr' => ['placeholder' => 'Zadejte dotazy nebo poznámky s poptávce']])->add('product', EntityType::class, ['label' => 'Garáž','class' => Product::class,'placeholder' => 'Vyberte garáž ...','required' => true,'query_builder' => function (EntityRepository $er): QueryBuilder {return $er->createQueryBuilder('p')->leftJoin('p.orders', 'o')->andWhere('p.deleted = :deleted')->setParameter('deleted', false)->andWhere('p.active = :active')->setParameter('active', true)->andWhere('o.status IS NULL OR o.status IN (:status)')->setParameter('status', [Order::STATUS_CANCELLED, Order::STATUS_NEW])->orderBy('p.id', 'ASC');},'choice_label' => static function (Product $product): string {return sprintf('%s - %d. etapa - cena: %s Kč', $product->getName(), $product->getPhase(), number_format($product->getPrice(), 0, ',', '.'));},])/*->add('deposit', ChoiceType::class, ['label' => 'Výše zálohy','required' => false,'multiple' => false,'expanded' => false,'placeholder' => 'Vyberte výši zálohy ...','choices' => ['50.000 Kč' => 50000,'400.000 Kč - sleva 25.000 Kč z ceny garáže' => 400000,]])*/->add('productOption', EntityType::class, ['label' => 'Nadstandardní vybavení','class' => Option::class,'required' => false,'multiple' => true,'expanded' => true,'query_builder' => function (EntityRepository $er): QueryBuilder {return $er->createQueryBuilder('o')->andWhere('o.deleted = :deleted')->setParameter('deleted', false)->andWhere('o.free = :free')->setParameter('free', false)->orderBy('o.id', 'ASC');},'choice_label' => static function (Option $option): string {return sprintf('%s:<br />%s<br />Cena: %s Kč', $option->getName(), $option->getDescription(), number_format($option->getPrice(), 0, ',', '.'));},'label_html' => true,]);}public function configureOptions(OptionsResolver $resolver){$resolver->setDefaults(['data_class' => OrderDTO::class,]);}}