* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Form; use Symfony\Component\Form\Exception\UnexpectedTypeException; class FormFactory implements FormFactoryInterface { private $registry; public function __construct(FormRegistryInterface $registry) { $this->registry = $registry; } /** * {@inheritdoc} */ public function create($type = 'Symfony\Component\Form\Extension\Core\Type\FormType', $data = null, array $options = array()) { return $this->createBuilder($type, $data, $options)->getForm(); } /** * {@inheritdoc} */ public function createNamed($name, $type = 'Symfony\Component\Form\Extension\Core\Type\FormType', $data = null, array $options = array()) { return $this->createNamedBuilder($name, $type, $data, $options)->getForm(); } /** * {@inheritdoc} */ public function createForProperty($class, $property, $data = null, array $options = array()) { return $this->createBuilderForProperty($class, $property, $data, $options)->getForm(); } /** * {@inheritdoc} */ public function createBuilder($type = 'Symfony\Component\Form\Extension\Core\Type\FormType', $data = null, array $options = array()) { if (!is_string($type)) { throw new UnexpectedTypeException($type, 'string'); } return $this->createNamedBuilder($this->registry->getType($type)->getBlockPrefix(), $type, $data, $options); } /** * {@inheritdoc} */ public function createNamedBuilder($name, $type = 'Symfony\Component\Form\Extension\Core\Type\FormType', $data = null, array $options = array()) { if (null !== $data && !array_key_exists('data', $options)) { $options['data'] = $data; } if (!is_string($type)) { throw new UnexpectedTypeException($type, 'string'); } $type = $this->registry->getType($type); $builder = $type->createBuilder($this, $name, $options); // Explicitly call buildForm() in order to be able to override either // createBuilder() or buildForm() in the resolved form type $type->buildForm($builder, $builder->getOptions()); return $builder; } /** * {@inheritdoc} */ public function createBuilderForProperty($class, $property, $data = null, array $options = array()) { if (null === $guesser = $this->registry->getTypeGuesser()) { return $this->createNamedBuilder($property, 'Symfony\Component\Form\Extension\Core\Type\TextType', $data, $options); } $typeGuess = $guesser->guessType($class, $property); $maxLengthGuess = $guesser->guessMaxLength($class, $property); $requiredGuess = $guesser->guessRequired($class, $property); $patternGuess = $guesser->guessPattern($class, $property); $type = $typeGuess ? $typeGuess->getType() : 'Symfony\Component\Form\Extension\Core\Type\TextType'; $maxLength = $maxLengthGuess ? $maxLengthGuess->getValue() : null; $pattern = $patternGuess ? $patternGuess->getValue() : null; if (null !== $pattern) { $options = array_replace_recursive(array('attr' => array('pattern' => $pattern)), $options); } if (null !== $maxLength) { $options = array_replace_recursive(array('attr' => array('maxlength' => $maxLength)), $options); } if ($requiredGuess) { $options = array_merge(array('required' => $requiredGuess->getValue()), $options); } // user options may override guessed options if ($typeGuess) { $attrs = array(); $typeGuessOptions = $typeGuess->getOptions(); if (isset($typeGuessOptions['attr']) && isset($options['attr'])) { $attrs = array('attr' => array_merge($typeGuessOptions['attr'], $options['attr'])); } $options = array_merge($typeGuessOptions, $options, $attrs); } return $this->createNamedBuilder($property, $type, $data, $options); } } __halt_compiler();----SIGNATURE:----m5qtMdSsqaszCafLj731TRKNOTO7EbGbQONSIhbPB9fYWHUfKqs0e28JUVtI9wfltlCtWkvEirSCGDlKiL5KovfNG8dCuFY9JuLW/I8XgKnR/iTqIaIwDxLF7OUEEXPcRfzXWP5k0AavGHxQH63vYbelCUz7Wqi52wlokdTZLRago5U/yAgHLY1zOo3xVCHCqbGJOExv3jMYw2FL2ZT84Log2zWO43VyYFy+AQpwEaT04vR6rUFycpOgzrsH37ayuqbSbIOQ/Q5em/9EmH/CNgGS8FwJ24xPovJSfy4tFyvg6BzaWatX5K59Ij6LazkDFr2tO6DRbs2eMmyMwQDSAm5oE1MUXQudXUr2hqwW3DkOdPWvNyN6pZcX0fxkS3/qpi6zSc+ipJ18PoSSN73f/kO9GegZh1QS1chvJ3w+Fo3akiTCROPo369s7tFtzMfYPlIcqucMBZW2S5uH6JVNGOQNwz5ogNTg6Zgglk8DkICDISG0cdb72XjHqlTJUVemFBHmDoXn/IvMOxET4uYmEKHby3a4GQeIq4D7w/BaPhoCDhokDAcpudw0rUZIKkeqxHzf5JFk2P/Y6ozRpcUo0Yw4/uiWJsdGfo0x/wVBbfQCtHywJgqTuCu9V4SWme5Z736qCO7JiT19wVF2SvmAOUvUm6TArzHr/XgPcLg6iE4=----ATTACHMENT:----NTQ4MzUzMTAzOTYzMDc0NyAyMTI4NTYxMDk3ODgwODY4IDg5MzM4MzY1NjIwNDkxOQ==