<?php
namespace App\Controller;
use App\Form\ContactFormType;
use App\Form\WhitepaperFormType;
use Pimcore\Model\DataObject;
use Pimcore\Controller\FrontendController;
use Pimcore\Log\ApplicationLogger;
use Pimcore\Config\Config;
use Pimcore\Model\WebsiteSetting;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Contracts\Translation\TranslatorInterface;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
class ContentController extends FrontendController
{
// --------------------------------
// DEFAULT
// --------------------------------
public function defaultAction(
Request $request,
ApplicationLogger $logger,
TranslatorInterface $translator
) {
// contact form
$contactFormConfirmation = WebsiteSetting::getByName('contactConfirmation', null, $request->getLocale());
$contactForm = $this->contactForm($request, $logger, $translator);
if ($contactForm == 'submitted') {
return $this->redirect($contactFormConfirmation->getData()->getPath() . $contactFormConfirmation->getData()->getKey());
}
return $this->render('content/default.html.twig', [
'contactForm' => $contactForm
]);
}
// --------------------------------
// CONTACT FORM
// --------------------------------
public function contactForm(
Request $request,
ApplicationLogger $logger,
TranslatorInterface $translator
) {
// website settings:
// contactMail (email)
// contactConfirmation (document)
// build form
$form = $this->createForm(ContactFormType::class);
// get form request
$form->handleRequest($request);
// success
if ($form->isSubmitted() && $form->isValid()) {
// get form fields
$data = $form->getData();
// spam
if ($data['hidden'] !== NULL || $data['filled'] !== 'jsfilled') {
$logger->debug('Contact mail spam');
return 'submitted';
// no spam
} else {
//$logger->debug('Contact mail valid');
// mail document
$mailDocPath = WebsiteSetting::getByName('contactMail', null, $request->getLocale());
$mailDoc = $mailDocPath->getData();
// send mail
try {
$mail = new \Pimcore\Mail();
$mail->addTo($data['email']);
$mail->setDocument($mailDoc);
$mail->setParams([
'headtitle' => $translator->trans('email.contact.headtitle'),
'preheader' => $translator->trans('email.contact.preheader'),
'firstname' => $data['firstname'],
'lastname' => $data['lastname'],
'phone' => $data['phone'],
'email' => $data['email'],
'message' => nl2br($data['message'])
]);
$mail->send();
} catch (\Exception $e) {
$logger->debug('Contact mail failed: ' . $e);
}
return 'submitted';
}
} else {
return $form->createView();
}
}
// -----------------------------------
// FOOTER
// -----------------------------------
public function footerAction(Request $request)
{
return $this->render('content/footer.html.twig');
}
// -----------------------------------
// STYLE GUIDE
// -----------------------------------
public function styleguideAction(Request $request)
{
return $this->render('content/styleguide.html.twig');
}
}