mirror of
https://github.com/Sylius/Sylius.git
synced 2026-07-05 20:57:12 +00:00
fix: handle request so errors can be displayed
This is a long time fix :)
This commit is contained in:
parent
385a5e501f
commit
dd73511008
1 changed files with 33 additions and 29 deletions
|
|
@ -46,48 +46,52 @@ final class ContactController
|
|||
$formType = $this->getSyliusAttribute($request, 'form', ContactType::class);
|
||||
$form = $this->formFactory->create($formType, null, $this->getFormOptions());
|
||||
|
||||
if ($request->isMethod('POST') && $form->handleRequest($request)->isSubmitted() && $form->isValid()) {
|
||||
/** @var mixed $data */
|
||||
$data = $form->getData();
|
||||
Assert::isArray($data);
|
||||
if ($request->isMethod('POST')) {
|
||||
$form->handleRequest($request);
|
||||
|
||||
$channel = $this->channelContext->getChannel();
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
/** @var mixed $data */
|
||||
$data = $form->getData();
|
||||
Assert::isArray($data);
|
||||
|
||||
/** @var ChannelInterface $channel */
|
||||
Assert::isInstanceOf($channel, ChannelInterface::class);
|
||||
$channel = $this->channelContext->getChannel();
|
||||
|
||||
$contactEmail = $channel->getContactEmail();
|
||||
/** @var ChannelInterface $channel */
|
||||
Assert::isInstanceOf($channel, ChannelInterface::class);
|
||||
|
||||
$redirectRoute = $this->getSyliusAttribute($request, 'redirect', 'referer');
|
||||
$contactEmail = $channel->getContactEmail();
|
||||
|
||||
if (null === $contactEmail) {
|
||||
$errorMessage = $this->getSyliusAttribute(
|
||||
$redirectRoute = $this->getSyliusAttribute($request, 'redirect', 'referer');
|
||||
|
||||
if (null === $contactEmail) {
|
||||
$errorMessage = $this->getSyliusAttribute(
|
||||
$request,
|
||||
'error_flash',
|
||||
'sylius.contact.request_error',
|
||||
);
|
||||
|
||||
/** @var FlashBagInterface $flashBag */
|
||||
$flashBag = $request->getSession()->getBag('flashes');
|
||||
$flashBag->add('error', $errorMessage);
|
||||
|
||||
return new RedirectResponse($this->router->generate($redirectRoute));
|
||||
}
|
||||
|
||||
$localeCode = $this->localeContext->getLocaleCode();
|
||||
$this->contactEmailManager->sendContactRequest($data, [$contactEmail], $channel, $localeCode);
|
||||
|
||||
$successMessage = $this->getSyliusAttribute(
|
||||
$request,
|
||||
'error_flash',
|
||||
'sylius.contact.request_error',
|
||||
'success_flash',
|
||||
'sylius.contact.request_success',
|
||||
);
|
||||
|
||||
/** @var FlashBagInterface $flashBag */
|
||||
$flashBag = $request->getSession()->getBag('flashes');
|
||||
$flashBag->add('error', $errorMessage);
|
||||
$flashBag->add('success', $successMessage);
|
||||
|
||||
return new RedirectResponse($this->router->generate($redirectRoute));
|
||||
}
|
||||
|
||||
$localeCode = $this->localeContext->getLocaleCode();
|
||||
$this->contactEmailManager->sendContactRequest($data, [$contactEmail], $channel, $localeCode);
|
||||
|
||||
$successMessage = $this->getSyliusAttribute(
|
||||
$request,
|
||||
'success_flash',
|
||||
'sylius.contact.request_success',
|
||||
);
|
||||
|
||||
/** @var FlashBagInterface $flashBag */
|
||||
$flashBag = $request->getSession()->getBag('flashes');
|
||||
$flashBag->add('success', $successMessage);
|
||||
|
||||
return new RedirectResponse($this->router->generate($redirectRoute));
|
||||
}
|
||||
|
||||
$template = $this->getSyliusAttribute($request, 'template', '@SyliusShop/contact/contact_request.html.twig');
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue