File: /home/undanet/www/PortalEmpleo/vendor/symfony/maker-bundle/src/Renderer/FormTypeRenderer.php
<?php
/*
* This file is part of the Symfony MakerBundle package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Bundle\MakerBundle\Renderer;
use Symfony\Bundle\MakerBundle\Generator;
use Symfony\Bundle\MakerBundle\Str;
use Symfony\Bundle\MakerBundle\Util\ClassNameDetails;
/**
* @internal
*/
final class FormTypeRenderer
{
private $generator;
public function __construct(Generator $generator)
{
$this->generator = $generator;
}
public function render(ClassNameDetails $formClassDetails, array $formFields, ClassNameDetails $boundClassDetails = null, array $constraintClasses = [], array $extraUseClasses = [])
{
$fieldTypeUseStatements = [];
$fields = [];
foreach ($formFields as $name => $fieldTypeOptions) {
$fieldTypeOptions = $fieldTypeOptions ?? ['type' => null, 'options_code' => null];
if (isset($fieldTypeOptions['type'])) {
$fieldTypeUseStatements[] = $fieldTypeOptions['type'];
$fieldTypeOptions['type'] = Str::getShortClassName($fieldTypeOptions['type']);
}
$fields[$name] = $fieldTypeOptions;
}
$mergedTypeUseStatements = array_unique(array_merge($fieldTypeUseStatements, $extraUseClasses));
sort($mergedTypeUseStatements);
$this->generator->generateClass(
$formClassDetails->getFullName(),
'form/Type.tpl.php',
[
'bounded_full_class_name' => $boundClassDetails ? $boundClassDetails->getFullName() : null,
'bounded_class_name' => $boundClassDetails ? $boundClassDetails->getShortName() : null,
'form_fields' => $fields,
'field_type_use_statements' => $mergedTypeUseStatements,
'constraint_use_statements' => $constraintClasses,
]
);
}
}