forked from GNUsocial/gnu-social
[FORM] Added Symfony Form wrapper
This commit is contained in:
parent
6e6e50939b
commit
07422c4e1a
55
src/Core/Form.php
Normal file
55
src/Core/Form.php
Normal file
@ -0,0 +1,55 @@
|
||||
<?php
|
||||
|
||||
// {{{ License
|
||||
// This file is part of GNU social - https://www.gnu.org/software/social
|
||||
//
|
||||
// GNU social is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// GNU social is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Affero General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with GNU social. If not, see <http://www.gnu.org/licenses/>.
|
||||
// }}}
|
||||
|
||||
/**
|
||||
* Handle network public feed
|
||||
*
|
||||
* @package GNUsocial
|
||||
* @category Wrapper
|
||||
*
|
||||
* @author Hugo Sales <hugo@fc.up.pt>
|
||||
* @copyright 2020 Free Software Foundation, Inc http://www.fsf.org
|
||||
* @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later
|
||||
*/
|
||||
|
||||
namespace App\Core;
|
||||
|
||||
use Symfony\Component\Form\Form as SymfForm;
|
||||
use Symfony\Component\Form\FormFactoryInterface;
|
||||
|
||||
abstract class Form
|
||||
{
|
||||
private static ?FormFactoryInterface $form_factory;
|
||||
|
||||
public static function setFactory($ff): void
|
||||
{
|
||||
self::$form_factory = $ff;
|
||||
}
|
||||
|
||||
public static function create(array $form,
|
||||
string $type = 'Symfony\Component\Form\Extension\Core\Type\FormType',
|
||||
array $options = null): SymfForm
|
||||
{
|
||||
$fb = self::$form_factory->createBuilder($type, $options ?: ['translation_domain' => false]);
|
||||
foreach ($form as $f) {
|
||||
$fb->add(...$f);
|
||||
}
|
||||
return $fb->getForm();
|
||||
}
|
||||
}
|
@ -49,6 +49,7 @@ use Psr\Log\LoggerInterface;
|
||||
use Symfony\Component\Console\Event\ConsoleCommandEvent;
|
||||
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
|
||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||
use Symfony\Component\Form\FormFactoryInterface;
|
||||
use Symfony\Component\HttpKernel\Event\RequestEvent;
|
||||
use Symfony\Component\HttpKernel\KernelEvents;
|
||||
use Symfony\Component\Routing\RouterInterface;
|
||||
@ -60,6 +61,7 @@ class GNUsocial implements EventSubscriberInterface
|
||||
protected TranslatorInterface $translator;
|
||||
protected EntityManagerInterface $entity_manager;
|
||||
protected RouterInterface $router;
|
||||
protected FormFactoryInterface $form_factory;
|
||||
|
||||
/**
|
||||
* Symfony dependency injection gives us access to these services
|
||||
@ -67,12 +69,14 @@ class GNUsocial implements EventSubscriberInterface
|
||||
public function __construct(LoggerInterface $logger,
|
||||
TranslatorInterface $translator,
|
||||
EntityManagerInterface $em,
|
||||
RouterInterface $router)
|
||||
RouterInterface $router,
|
||||
FormFactoryInterface $ff)
|
||||
{
|
||||
$this->logger = $logger;
|
||||
$this->translator = $translator;
|
||||
$this->entity_manager = $em;
|
||||
$this->router = $router;
|
||||
$this->form_factory = $ff;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -87,6 +91,7 @@ class GNUsocial implements EventSubscriberInterface
|
||||
I18nHelper::setTranslator($this->translator);
|
||||
DB::setManager($this->entity_manager);
|
||||
Router::setRouter($this->router);
|
||||
Form::setFactory($this->form_factory);
|
||||
|
||||
DefaultSettings::setDefaults();
|
||||
ModulesManager::loadModules();
|
||||
|
Loading…
Reference in New Issue
Block a user