diff --git a/src/Controller/ProjectController.php b/src/Controller/ProjectController.php
index 3a67865..faa7ebf 100644
--- a/src/Controller/ProjectController.php
+++ b/src/Controller/ProjectController.php
@@ -5,6 +5,7 @@
use Symfony\Component\HttpFoundation\Response;
use App\Repository\ProjectRepository;
use App\Entity\ProjectEntity;
+use App\Form\Project\ProjectAddForm;
class ProjectController extends AbstractExtendedController
{
@@ -21,12 +22,35 @@
$entityManager = $this->getDoctrine()->getManager();
/** @var ProjectRepository $projectRepository */
$projectRepository = $entityManager->getRepository(ProjectEntity::class);
-
+
+ // Project add form
+ /** @var ProjectAddForm $projectAddForm */
+ $projectAddForm = $this->createNamedCustomForm('projectAdd', ProjectAddForm::class);
+ $projectAddForm->handleRequest($request);
+ if ($projectAddForm->isSubmitted() && $projectAddForm->isSubmitted()) {
+ $errors = $projectAddForm->validate();
+ if (empty($errors)) {
+ $project = $projectAddForm->getProject();
+ $entityManager->persist($project);
+ $entityManager->flush();
+
+ return $this->ajaxFormAnswer([
+ 'refresh' => true,
+ 'reset' => true
+ ]);
+ }
+ return $this->ajaxFormAnswer([
+ 'error' => join('
', $errors),
+ 'code' => Response::HTTP_BAD_REQUEST
+ ]);
+ }
+
// Get projects
$projects = $projectRepository->findAll();
-
+
return $this->render("project/projects.html.twig", [
'projects' => $projects,
+ 'projectAddForm' => $projectAddForm
]);
}
}
\ No newline at end of file
diff --git a/src/Form/Project/ProjectAddForm.php b/src/Form/Project/ProjectAddForm.php
new file mode 100644
index 0000000..ea52b8c
--- /dev/null
+++ b/src/Form/Project/ProjectAddForm.php
@@ -0,0 +1,48 @@
+form->getData();
+
+ $project = new ProjectEntity();
+ $project->generateId();
+ $project->setName($data['name']);
+ $project->setActive(true);
+
+ return $project;
+ }
+
+ /**
+ *
+ * {@inheritdoc}
+ */
+ public function getTemplate(): string
+ {
+ return '_includes/html/form/project/add.html.twig';
+ }
+
+ /**
+ *
+ * {@inheritdoc}
+ */
+ protected function addFields($formBuilder, $options): void
+ {
+ $formBuilder->add('name', TextType::class, [
+ 'required' => true
+ ])->add('submit', SubmitType::class);
+ }
+}
\ No newline at end of file
diff --git a/templates/_includes/html/form/project/add.html.twig b/templates/_includes/html/form/project/add.html.twig
new file mode 100644
index 0000000..47e4223
--- /dev/null
+++ b/templates/_includes/html/form/project/add.html.twig
@@ -0,0 +1,9 @@
+{{ form_start(form, {attr: {class: 'ajax-form'}}) }}
+