forked from GNUsocial/gnu-social
[FORM] Added Symfony Form wrapper
This commit is contained in:
parent
bc6ead4ab1
commit
b32e173749
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\Console\Event\ConsoleCommandEvent;
|
||||||
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
|
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
|
||||||
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
||||||
|
use Symfony\Component\Form\FormFactoryInterface;
|
||||||
use Symfony\Component\HttpKernel\Event\RequestEvent;
|
use Symfony\Component\HttpKernel\Event\RequestEvent;
|
||||||
use Symfony\Component\HttpKernel\KernelEvents;
|
use Symfony\Component\HttpKernel\KernelEvents;
|
||||||
use Symfony\Component\Routing\RouterInterface;
|
use Symfony\Component\Routing\RouterInterface;
|
||||||
@ -60,6 +61,7 @@ class GNUsocial implements EventSubscriberInterface
|
|||||||
protected TranslatorInterface $translator;
|
protected TranslatorInterface $translator;
|
||||||
protected EntityManagerInterface $entity_manager;
|
protected EntityManagerInterface $entity_manager;
|
||||||
protected RouterInterface $router;
|
protected RouterInterface $router;
|
||||||
|
protected FormFactoryInterface $form_factory;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Symfony dependency injection gives us access to these services
|
* Symfony dependency injection gives us access to these services
|
||||||
@ -67,12 +69,14 @@ class GNUsocial implements EventSubscriberInterface
|
|||||||
public function __construct(LoggerInterface $logger,
|
public function __construct(LoggerInterface $logger,
|
||||||
TranslatorInterface $translator,
|
TranslatorInterface $translator,
|
||||||
EntityManagerInterface $em,
|
EntityManagerInterface $em,
|
||||||
RouterInterface $router)
|
RouterInterface $router,
|
||||||
|
FormFactoryInterface $ff)
|
||||||
{
|
{
|
||||||
$this->logger = $logger;
|
$this->logger = $logger;
|
||||||
$this->translator = $translator;
|
$this->translator = $translator;
|
||||||
$this->entity_manager = $em;
|
$this->entity_manager = $em;
|
||||||
$this->router = $router;
|
$this->router = $router;
|
||||||
|
$this->form_factory = $ff;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -87,6 +91,7 @@ class GNUsocial implements EventSubscriberInterface
|
|||||||
I18nHelper::setTranslator($this->translator);
|
I18nHelper::setTranslator($this->translator);
|
||||||
DB::setManager($this->entity_manager);
|
DB::setManager($this->entity_manager);
|
||||||
Router::setRouter($this->router);
|
Router::setRouter($this->router);
|
||||||
|
Form::setFactory($this->form_factory);
|
||||||
|
|
||||||
DefaultSettings::setDefaults();
|
DefaultSettings::setDefaults();
|
||||||
ModulesManager::loadModules();
|
ModulesManager::loadModules();
|
||||||
|
Loading…
Reference in New Issue
Block a user