From bf80fe298aa054682713980f19399d9f17dbcab5 Mon Sep 17 00:00:00 2001 From: Avior Date: Tue, 16 Apr 2019 16:33:45 +0200 Subject: [PATCH] Added support for forms still work in progress --- src/AdminPanel/Form.php | 81 ++++++++++++++++++++++++++ src/AdminPanel/Twig/Form/_default.twig | 14 +++++ src/AdminPanel/Twig/Form/choice.twig | 17 ++++++ src/AdminPanel/Twig/Form/date.twig | 7 +++ src/AdminPanel/Twig/Form/entity.twig | 13 +++++ src/AdminPanel/Twig/Form/text.twig | 6 ++ 6 files changed, 138 insertions(+) create mode 100644 src/AdminPanel/Form.php create mode 100644 src/AdminPanel/Twig/Form/_default.twig create mode 100644 src/AdminPanel/Twig/Form/choice.twig create mode 100644 src/AdminPanel/Twig/Form/date.twig create mode 100644 src/AdminPanel/Twig/Form/entity.twig create mode 100644 src/AdminPanel/Twig/Form/text.twig diff --git a/src/AdminPanel/Form.php b/src/AdminPanel/Form.php new file mode 100644 index 0000000..03cbf11 --- /dev/null +++ b/src/AdminPanel/Form.php @@ -0,0 +1,81 @@ +getCache(); + $forms = $cache->get("forms"); + if (isset($forms[$formname])) { + $form = $forms[$formname]; + if (isset($form->entity) && (!isset($entity) || !($entity instanceof $form->entity))) { + $entity = new $form->entity(); + } + // dump($form->fields); + foreach ($form->fields as $name => $settings) { + $options = array( + 'name' => $name, + 'label' => null, + 'attr' => array(), + 'value' => null, + 'type' => null, //used in case of formtype not found + 'choices' => null //choiceType + ); + if ($entity !== null) { + $func = "get" . ucfirst($name); + if ($entity->$func() !== null) { + $options["value"] = $entity->$func(); + } + } + foreach ($settings as $opt => $value) { + // dump($settings); + if (in_array($opt, Form::$knownOptions)) { + if ($opt === "entity") { + // dd($ap->getEm()->getRepository($value)->findAll()); + $options["entities"] = $ap->getEm()->getRepository($value)->findAll(); + } else { + $options[$opt] = $value; + } + } else { + $options["attr"][$opt] = $value; + } + } + if (in_array($options["type"], Form::$knownTypes)) { + $this->$name = $ap->getTwig()->display("@AdminPanel/Form/" . $options["type"] . ".twig", $options); + } else { + $this->$name = $ap->getTwig()->display("@AdminPanel/Form/_default.twig", $options); + } + } + } else { + // TODO: IDK + } + } +} diff --git a/src/AdminPanel/Twig/Form/_default.twig b/src/AdminPanel/Twig/Form/_default.twig new file mode 100644 index 0000000..3268168 --- /dev/null +++ b/src/AdminPanel/Twig/Form/_default.twig @@ -0,0 +1,14 @@ +{# Default label if type is not found #} +{% spaceless %} + {% block form %} + {% if label %} + + {% endif %} + +{% endblock %} +{% endspaceless %} diff --git a/src/AdminPanel/Twig/Form/choice.twig b/src/AdminPanel/Twig/Form/choice.twig new file mode 100644 index 0000000..fa2b401 --- /dev/null +++ b/src/AdminPanel/Twig/Form/choice.twig @@ -0,0 +1,17 @@ +{% extends "@AdminPanel/Form/_default.twig" %} + +{% block form %} +{% if label %} + +{% endif %} + +{% endblock %} diff --git a/src/AdminPanel/Twig/Form/date.twig b/src/AdminPanel/Twig/Form/date.twig new file mode 100644 index 0000000..5080dd3 --- /dev/null +++ b/src/AdminPanel/Twig/Form/date.twig @@ -0,0 +1,7 @@ + diff --git a/src/AdminPanel/Twig/Form/entity.twig b/src/AdminPanel/Twig/Form/entity.twig new file mode 100644 index 0000000..2be793a --- /dev/null +++ b/src/AdminPanel/Twig/Form/entity.twig @@ -0,0 +1,13 @@ +{% extends "@AdminPanel/Form/_default.twig" %} +{% block form %} + {% if label %} + + {% endif %} + + + + {% for entity in entities %} + + {% endfor %} + +{% endblock %} diff --git a/src/AdminPanel/Twig/Form/text.twig b/src/AdminPanel/Twig/Form/text.twig new file mode 100644 index 0000000..8219e3d --- /dev/null +++ b/src/AdminPanel/Twig/Form/text.twig @@ -0,0 +1,6 @@ +{% extends "@AdminPanel/Form/_default.twig" %} + +{% block form %} + + +{% endblock %}