Allow creatig FridgeProductLine from fridge form

This commit is contained in:
Tim
2022-01-02 18:56:28 +01:00
parent 39e028bdca
commit d4f6b359d5
7 changed files with 83 additions and 2 deletions

View File

@ -30,10 +30,14 @@ class FridgeController extends AbstractController
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
foreach ($fridge->getProductLines() as $productLine) {
$productLine->setFridge($fridge);
$em->persist($productLine);
}
$em->persist($fridge);
$em->flush();
return $this->redirectToRoute('fridge_list');
// return $this->redirectToRoute('fridge_list');
}
return $this->render('fridge/single.html.twig', [

View File

@ -29,6 +29,11 @@ class Fridge
$this->productLines = new ArrayCollection();
}
public function __toString(): string
{
return $this->name;
}
public function getId(): ?int
{
return $this->id;

View File

@ -0,0 +1,16 @@
<?php
namespace App\Form;
use App\Entity\FridgeProductLine;
use Symfony\Component\OptionsResolver\OptionsResolver;
class FridgeProductLineType extends ProductLineType
{
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => FridgeProductLine::class,
]);
}
}

View File

@ -4,6 +4,7 @@ namespace App\Form;
use App\Entity\Fridge;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\CollectionType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
@ -15,7 +16,10 @@ class FridgeType extends AbstractType
$builder
->add('name')
->add('description')
->add('productLines')
->add('productLines', CollectionType::class, [
'entry_type' => FridgeProductLineType::class,
'allow_add' => true,
])
->add('save', SubmitType::class)
;
}

View File

@ -0,0 +1,17 @@
<?php
namespace App\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
abstract class ProductLineType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('product')
->add('count')
;
}
}