* * 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:----psFNiLUAo5q+Q8zLtifpNB3dIdNa0SBL9fdHvTxoKWfrUNFtUwl3QkqB/3KM7Jl+kP0He65jpf9dNmSc5slqye/fNbSeUoETMF0wq+QmqbZRANOUwKRi0FHowoe0B/BWDWzV+xdjqFHvU6wXiNKBP5iOe0sv2Qlb/SXNyQKsLp6IrVVO/HiIyZCPzaZWLGdYyWQwnA1i4bp0S12DHZ9sOXqGPyxLdMfHEXshq5X/UHAmB0e82RCw/5VZcfyBcmhyfvpZbpeH4izWPJ5+BBhyYZPRM1mHqjC1TC3nN5GCwe4ul658INTCAmm4iuKy/gM9jazFHWBXps/rKq8TqsdI7U42YydbawqpL6kFsca6zWjro5TIC+N2hRtfIThbp2LwWKIOf/aOsw5XNKwf5oDqGPEJr/jD8n6rfwhx/YSVGBKatzCT3WcXQSEn5ZYIkkoNPpHkuXS6e1iKnxzdJ6E+EugHtbtxLKHnHOZ7wpUkLeaRqP9bWLpVKtrhjbBKQgqFSDTD9ihXrqGFw8gyXjVrP7/tgjjfvzdw4mvJoJN/XlfS/7bWKAZU7DH7YDe114nbBOcKxyjY5PETGBoHjhccRoX9gmNv4l7HfJKkpCVE+eWo1yM/WpyntAfcDetclqCENKcnrL+HQ6Zycczgkus7a50qRTpWpONQ54RILqOCigU=----ATTACHMENT:----NzYyMDk3MDQ4ODc4MzQ3MyAxNjA3NjU4NjQ3MzE0OTUwIDgxODcwNjU2NzUxMDQ5Nzc=