diff --git a/app/Resources/views/base.html.twig b/app/Resources/views/base.html.twig index 4f5d87e..3a3eacd 100644 --- a/app/Resources/views/base.html.twig +++ b/app/Resources/views/base.html.twig @@ -46,6 +46,9 @@
{% if user is defined and user %} diff --git a/app/Resources/views/message/message_form.html.twig b/app/Resources/views/message/message_form.html.twig new file mode 100644 index 0000000..81d4374 --- /dev/null +++ b/app/Resources/views/message/message_form.html.twig @@ -0,0 +1,6 @@ +{% extends 'base.html.twig' %} + +{% block body %} + {{ form(form) }} +{% endblock %} + diff --git a/app/config/services.yml b/app/config/services.yml index 59f9fb4..d0fb2e1 100644 --- a/app/config/services.yml +++ b/app/config/services.yml @@ -20,6 +20,10 @@ services: class: AppBundle\Controller\UserController autowire: true + app.controller.message_controller: + class: AppBundle\Controller\MessageController + autowire: true + app.facade.category_facade: class: AppBundle\Facade\CategoryFacade autowire: true @@ -42,6 +46,11 @@ services: factory: ['@doctrine.orm.default_entity_manager', getRepository] arguments: ['AppBundle\Entity\Product'] + app.repository.message_repository: + class: AppBundle\Repository\MessageRepository + factory: ['@doctrine.orm.default_entity_manager', getRepository] + arguments: ['AppBundle\Entity\Message'] + encoder: class: Symfony\Component\Security\Core\Encoder\BCryptPasswordEncoder arguments: diff --git a/src/AppBundle/Controller/MessageController.php b/src/AppBundle/Controller/MessageController.php new file mode 100644 index 0000000..ae4f8f7 --- /dev/null +++ b/src/AppBundle/Controller/MessageController.php @@ -0,0 +1,65 @@ + + * @Route(service="app.controller.message_controller") + */ +class MessageController +{ + private $messageFacade; + private $formFactory; + private $entityManager; + private $router; + + public function __construct( + MessageFacade $messageFacade, + EntityManager $entityManager, + FormFactory $formFactory, + RouterInterface $router + ) { + $this->messageFacade = $messageFacade; + $this->formFactory = $formFactory; + $this->entityManager = $entityManager; + $this->router = $router; + } + + /** + * @Route("/contact", name="message") + * @Template("message/message_form.html.twig") + * @param Request $request + * @return RedirectResponse|array + */ + public function formAction(Request $request) + { + $message = new Message(); + $form = $this->formFactory->create(MessageFormType::class, $message); + + $form->handleRequest($request); + if ($form->isSubmitted() && $form->isValid()) { + + $this->entityManager->persist($message); + $this->entityManager->flush([$message]); + + return RedirectResponse::create($this->router->generate("message")); + } + + return [ + "form" => $form->createView(), + ]; + } + + +} \ No newline at end of file diff --git a/src/AppBundle/Entity/Message.php b/src/AppBundle/Entity/Message.php new file mode 100644 index 0000000..22367e1 --- /dev/null +++ b/src/AppBundle/Entity/Message.php @@ -0,0 +1,116 @@ + + * @ORM\Entity(repositoryClass="AppBundle\Repository\MessageRepository") + */ +class Message +{ + + /** + * @var int + * @ORM\Id + * @ORM\GeneratedValue + * @ORM\Column(type="integer") + */ + private $id; + + /** + * @var string + * @ORM\Column(type="string") + */ + private $email; + + /** + * @var string + * @ORM\Column(type="string") + */ + private $subject; + + /** + * @var string + * @ORM\Column(type="text") + */ + private $message; + + + /** + * @return int + */ + public function getId() + { + return $this->id; + } + + /** + * @param int $id + * @return self + */ + public function setId($id) + { + $this->id = $id; + + return $this; + } + + /** + * @return string + */ + public function getEmail() + { + return $this->email; + } + + /** + * @param string $email + * @return self + */ + public function setEmail($email) + { + $this->email = $email; + + return $this; + } + + /** + * @return string + */ + public function getSubject() + { + return $this->subject; + } + + /** + * @param string $subject + * @return self + */ + public function setSubject($subject) + { + $this->subject = $subject; + + return $this; + } + + /** + * @return string + */ + public function getMessage() + { + return $this->message; + } + + /** + * @param string $message + * @return self + */ + public function setMessage($message) + { + $this->message = $message; + + return $this; + } + +} \ No newline at end of file diff --git a/src/AppBundle/Facade/MessageFacade.php b/src/AppBundle/Facade/MessageFacade.php new file mode 100644 index 0000000..2586f68 --- /dev/null +++ b/src/AppBundle/Facade/MessageFacade.php @@ -0,0 +1,32 @@ + + */ +class MessageFacade +{ + + private $messageRepository; + private $entityManager; + + public function __construct( + MessageRepository $messageRepository, + EntityManager $entityManager + ) { + $this->messageRepository = $messageRepository; + $this->entityManager = $entityManager; + } + + + public function save(Message $mmessage) + { + $this->entityManager->persist($mmessage); + $this->entityManager->flush($mmessage); + } + +} \ No newline at end of file diff --git a/src/AppBundle/FormType/MessageFormType.php b/src/AppBundle/FormType/MessageFormType.php new file mode 100644 index 0000000..687194d --- /dev/null +++ b/src/AppBundle/FormType/MessageFormType.php @@ -0,0 +1,54 @@ + + * @ORM\Entity + * @ORM\Table(name="message_form_type") + */ +class MessageFormType extends AbstractType +{ + public function buildForm(FormBuilderInterface $builder, array $options) + { + $builder + ->add("email", EmailType::class, [ + "label" => "E-mail", + "attr" => [ + "class" => "form-control", + ], + ]) + ->add("subject", TextType::class, [ + "label" => "Predmet", + "attr" => [ + "class" => "form-control", + ], + ]) + ->add("message", TextareaType::class, [ + "label" => "Obsah", + "attr" => [ + "class" => "form-control", + ], + ]) + ->add('submit', SubmitType::class, [ + 'label' => 'Uložit změny', + ]); + } + + public function configureOptions(OptionsResolver $resolver) + { + $resolver->setDefaults(array( + "data_class" => Message::class, + )); + } +} \ No newline at end of file diff --git a/src/AppBundle/Repository/MessageRepository.php b/src/AppBundle/Repository/MessageRepository.php new file mode 100644 index 0000000..2dd283a --- /dev/null +++ b/src/AppBundle/Repository/MessageRepository.php @@ -0,0 +1,15 @@ +