!20 add username to order and item
This commit is contained in:
parent
9d81464fd8
commit
511f12f10f
12 changed files with 147 additions and 24 deletions
|
@ -4,6 +4,7 @@ namespace App\Controller;
|
|||
|
||||
use App\Form\UserNameFormType;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\Cookie;
|
||||
use Symfony\Component\HttpFoundation\RedirectResponse;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
|
@ -13,21 +14,34 @@ use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
|
|||
final class HomeController extends AbstractController
|
||||
{
|
||||
public const string DEFAULT_USERNAME = 'nobody';
|
||||
|
||||
#[Route('/', name: 'home')]
|
||||
public function home(UrlGeneratorInterface $router): Response
|
||||
{
|
||||
return new RedirectResponse($router->generate('app_food_order_index'));
|
||||
}
|
||||
|
||||
public function usernameForm(Request $request): Response
|
||||
#[Route('/username', name: 'username')]
|
||||
public function usernameForm(Request $request, UrlGeneratorInterface $router): Response
|
||||
{
|
||||
$username = $request->cookies->get('username', self::DEFAULT_USERNAME);
|
||||
$form = $this->createForm(UsernameFormType::class);
|
||||
$form->handleRequest($request);
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
$username = $form->getData()['username'] ?? self::DEFAULT_USERNAME;
|
||||
if ($username === '') {}
|
||||
|
||||
$response = new RedirectResponse($router->generate('app_food_order_index'));
|
||||
if ($username === self::DEFAULT_USERNAME || $username === '') {
|
||||
$response->headers->clearCookie('username');
|
||||
return $response;
|
||||
}
|
||||
$response->headers->setCookie(new Cookie('username', $username));
|
||||
return $response;
|
||||
}
|
||||
$username = $request->cookies->get('username', self::DEFAULT_USERNAME);
|
||||
$form->setData([
|
||||
'username' => $username,
|
||||
]);
|
||||
return $this->render('username.html.twig', [
|
||||
'form' => $form,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,6 +34,11 @@ class FoodOrder
|
|||
#[ORM\OneToMany(targetEntity: OrderItem::class, mappedBy: 'foodOrder', orphanRemoval: true)]
|
||||
private Collection $orderItems;
|
||||
|
||||
#[ORM\Column(length: 255, options: [
|
||||
'default' => 'nobody',
|
||||
])]
|
||||
private string|null $createdBy = 'nobody';
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->orderItems = new ArrayCollection;
|
||||
|
@ -117,4 +122,16 @@ class FoodOrder
|
|||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getCreatedBy(): string|null
|
||||
{
|
||||
return $this->createdBy;
|
||||
}
|
||||
|
||||
public function setCreatedBy(string $createdBy): static
|
||||
{
|
||||
$this->createdBy = $createdBy;
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,6 +31,11 @@ class OrderItem
|
|||
#[ORM\JoinColumn(nullable: false)]
|
||||
private MenuItem|null $menuItem = null;
|
||||
|
||||
#[ORM\Column(length: 255, options: [
|
||||
'default' => 'nobody',
|
||||
])]
|
||||
private string|null $createdBy = 'nobody';
|
||||
|
||||
public function getId(): Ulid|null
|
||||
{
|
||||
return $this->id;
|
||||
|
@ -83,4 +88,16 @@ class OrderItem
|
|||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function getCreatedBy(): string|null
|
||||
{
|
||||
return $this->createdBy;
|
||||
}
|
||||
|
||||
public function setCreatedBy(string $createdBy): static
|
||||
{
|
||||
$this->createdBy = $createdBy;
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,7 +14,9 @@ final class OrderItemType extends AbstractType
|
|||
public function buildForm(FormBuilderInterface $builder, array $options): void
|
||||
{
|
||||
$builder
|
||||
->add('name')
|
||||
->add(child: 'name', options: [
|
||||
'data' => $options['name'] ?? '',
|
||||
])
|
||||
->add('extras')
|
||||
;
|
||||
}
|
||||
|
|
|
@ -1,20 +1,25 @@
|
|||
<?php
|
||||
<?php declare(strict_types=1);
|
||||
|
||||
namespace App\Form;
|
||||
|
||||
use Override;
|
||||
use Symfony\Component\Form\AbstractType;
|
||||
use Symfony\Component\Form\FormBuilderInterface;
|
||||
use Symfony\Component\OptionsResolver\OptionsResolver;
|
||||
|
||||
class UserNameFormType extends AbstractType
|
||||
final class UserNameFormType extends AbstractType
|
||||
{
|
||||
#[Override]
|
||||
public function buildForm(FormBuilderInterface $builder, array $options): void
|
||||
{
|
||||
$builder
|
||||
->add('username')
|
||||
->add(child: 'username', options: [
|
||||
'required' => false,
|
||||
])
|
||||
;
|
||||
}
|
||||
|
||||
#[Override]
|
||||
public function configureOptions(OptionsResolver $resolver): void
|
||||
{
|
||||
$resolver->setDefaults([
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue