From 0f127a092034eea89b7a90eba3862dd376d48d73 Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Mon, 19 Jun 2017 20:36:51 +0200 Subject: [PATCH] feature/3: upload a file --- src/Gist/Controller/EditController.php | 12 +++++++++++- src/Gist/Form/CreateGistForm.php | 17 +++++++++++++---- src/Gist/Resources/views/Edit/index.html.twig | 6 +++++- src/Gist/Resources/views/base.html.twig | 1 + 4 files changed, 30 insertions(+), 6 deletions(-) diff --git a/src/Gist/Controller/EditController.php b/src/Gist/Controller/EditController.php index 348e989..c23202b 100644 --- a/src/Gist/Controller/EditController.php +++ b/src/Gist/Controller/EditController.php @@ -37,9 +37,19 @@ class EditController extends Controller if ($request->isMethod('post')) { $form->submit($request); + $data = $form->getData(); + + if (empty($form->getData()['content']) && empty($request->files)) { + $form->get('content')->addError(new FormError('form.error.not_blank')); + } elseif (empty($form->getData()['content']) && !empty($request->files)) { + if (count($form->get('file')->getErrors()) === 0) { + $data['content'] = file_get_contents($form->get('file')->getData()->getPathName()); + unset($data['file']); + } + } if ($form->isValid()) { - $gist = $app['gist']->create(new Gist(), $form->getData(), $this->getUser()); + $gist = $app['gist']->create(new Gist(), $data, $this->getUser()); } } diff --git a/src/Gist/Form/CreateGistForm.php b/src/Gist/Form/CreateGistForm.php index a30e4f8..060f444 100644 --- a/src/Gist/Form/CreateGistForm.php +++ b/src/Gist/Form/CreateGistForm.php @@ -32,16 +32,25 @@ class CreateGistForm extends AbstractForm 'content', 'textarea', array( - 'required' => true, + 'required' => false, 'attr' => array( 'class' => 'form-control', 'rows' => 10, ), 'trim' => false, 'constraints' => array( - new NotBlank(array( - 'message' => $this->translator->trans('form.error.not_blank'), - )), + ), + ) + ); + + $this->builder->add( + 'file', + 'file', + array( + 'required' => false, + 'attr' => array( + ), + 'constraints' => array( ), ) ); diff --git a/src/Gist/Resources/views/Edit/index.html.twig b/src/Gist/Resources/views/Edit/index.html.twig index e557467..eb06868 100644 --- a/src/Gist/Resources/views/Edit/index.html.twig +++ b/src/Gist/Resources/views/Edit/index.html.twig @@ -4,7 +4,7 @@ {% block body %}
-
+
@@ -71,6 +71,10 @@ {{ form_errors(form.content) }} {{ form_widget(form.content) }}

+

+ {{ form_errors(form.file) }} + {{ form_widget(form.file) }} +

diff --git a/src/Gist/Resources/views/base.html.twig b/src/Gist/Resources/views/base.html.twig index 046d5f1..d9d83e2 100644 --- a/src/Gist/Resources/views/base.html.twig +++ b/src/Gist/Resources/views/base.html.twig @@ -106,6 +106,7 @@ var trans = function(key) { var translations = { 'form.confirm': '{{ 'form.confirm'|trans }}', + 'form.error.not_blank': '{{ 'form.confirm'|trans }}', }; if (translations.hasOwnProperty(key)) {