<?php
namespace App\Form\Website\Site;
use App\Entity\Website\Product\Product;
use App\Entity\Website\Product\ProductPrice;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class AddToCartType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
/**
* @var Product $product
* @var ProductPrice $productPriceObject
*/
$product = $options['product'];
$productPriceObject = $options['productPriceObject'];
if ($productPriceObject) {
$selectedValues = $productPriceObject->getSelectedValues();
}
foreach ($product->getProductAttributes() as $attribute) {
if ($attribute->isActive() && $attribute->getDeletedAt() === null) {
$choices = [];
$selectedValue = null;
foreach ($attribute->getProductAttributeValues() as $value) {
if ($value->isActive() && $value->getDeletedAt() === null) {
$choices[$value->getValue()] = $value->getValue();
if ($productPriceObject) {
if ($selectedValues->contains($value)) {
$selectedValue = $value->getValue();
}
}
}
}
$builder->add($attribute->getId(), ChoiceType::class, [
'label' => $attribute->getName(),
'label_attr' => ['class' => 'd-none'],
'attr' => ['class' => 'd-none'],
'choices' => $choices,
'placeholder' => 'انتخاب کنید...',
'mapped' => false,
'required' => true,
'data' => $selectedValue, // مقدار پیشفرض
]);
}
}
$builder->add('quantity', IntegerType::class, [
'data' => 1,
'label' => 'تعداد',
'attr' => ['min' => 1],
]);
$builder->add('product_price_id', HiddenType::class, [
'mapped' => false,
'required' => false,
]);
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setRequired(['product']);
$resolver->setDefaults([
'product' => null,
'productPriceObject' => null,
]);
}
}