diff options
Diffstat (limited to 'vendor/symfony/form/Symfony/Component/Form/Extension/Core/Type/FormType.php')
-rw-r--r-- | vendor/symfony/form/Symfony/Component/Form/Extension/Core/Type/FormType.php | 214 |
1 files changed, 0 insertions, 214 deletions
diff --git a/vendor/symfony/form/Symfony/Component/Form/Extension/Core/Type/FormType.php b/vendor/symfony/form/Symfony/Component/Form/Extension/Core/Type/FormType.php deleted file mode 100644 index 0c39d3eb..00000000 --- a/vendor/symfony/form/Symfony/Component/Form/Extension/Core/Type/FormType.php +++ /dev/null | |||
@@ -1,214 +0,0 @@ | |||
1 | <?php | ||
2 | |||
3 | /* | ||
4 | * This file is part of the Symfony package. | ||
5 | * | ||
6 | * (c) Fabien Potencier <fabien@symfony.com> | ||
7 | * | ||
8 | * For the full copyright and license information, please view the LICENSE | ||
9 | * file that was distributed with this source code. | ||
10 | */ | ||
11 | |||
12 | namespace Symfony\Component\Form\Extension\Core\Type; | ||
13 | |||
14 | use Symfony\Component\Form\FormBuilderInterface; | ||
15 | use Symfony\Component\Form\FormInterface; | ||
16 | use Symfony\Component\Form\FormView; | ||
17 | use Symfony\Component\Form\Extension\Core\EventListener\TrimListener; | ||
18 | use Symfony\Component\Form\Extension\Core\DataMapper\PropertyPathMapper; | ||
19 | use Symfony\Component\Form\Exception\LogicException; | ||
20 | use Symfony\Component\OptionsResolver\Options; | ||
21 | use Symfony\Component\OptionsResolver\OptionsResolverInterface; | ||
22 | use Symfony\Component\PropertyAccess\PropertyAccess; | ||
23 | use Symfony\Component\PropertyAccess\PropertyAccessorInterface; | ||
24 | |||
25 | class FormType extends BaseType | ||
26 | { | ||
27 | /** | ||
28 | * @var PropertyAccessorInterface | ||
29 | */ | ||
30 | private $propertyAccessor; | ||
31 | |||
32 | public function __construct(PropertyAccessorInterface $propertyAccessor = null) | ||
33 | { | ||
34 | $this->propertyAccessor = $propertyAccessor ?: PropertyAccess::getPropertyAccessor(); | ||
35 | } | ||
36 | |||
37 | /** | ||
38 | * {@inheritdoc} | ||
39 | */ | ||
40 | public function buildForm(FormBuilderInterface $builder, array $options) | ||
41 | { | ||
42 | parent::buildForm($builder, $options); | ||
43 | |||
44 | $builder | ||
45 | ->setRequired($options['required']) | ||
46 | ->setErrorBubbling($options['error_bubbling']) | ||
47 | ->setEmptyData($options['empty_data']) | ||
48 | ->setPropertyPath($options['property_path']) | ||
49 | ->setMapped($options['mapped']) | ||
50 | ->setByReference($options['by_reference']) | ||
51 | ->setInheritData($options['inherit_data']) | ||
52 | ->setCompound($options['compound']) | ||
53 | ->setData(isset($options['data']) ? $options['data'] : null) | ||
54 | ->setDataLocked(isset($options['data'])) | ||
55 | ->setDataMapper($options['compound'] ? new PropertyPathMapper($this->propertyAccessor) : null) | ||
56 | ->setMethod($options['method']) | ||
57 | ->setAction($options['action']) | ||
58 | ->setAutoInitialize($options['auto_initialize']) | ||
59 | ; | ||
60 | |||
61 | if ($options['trim']) { | ||
62 | $builder->addEventSubscriber(new TrimListener()); | ||
63 | } | ||
64 | } | ||
65 | |||
66 | /** | ||
67 | * {@inheritdoc} | ||
68 | */ | ||
69 | public function buildView(FormView $view, FormInterface $form, array $options) | ||
70 | { | ||
71 | parent::buildView($view, $form, $options); | ||
72 | |||
73 | $name = $form->getName(); | ||
74 | $readOnly = $options['read_only']; | ||
75 | |||
76 | if ($view->parent) { | ||
77 | if ('' === $name) { | ||
78 | throw new LogicException('Form node with empty name can be used only as root form node.'); | ||
79 | } | ||
80 | |||
81 | // Complex fields are read-only if they themselves or their parents are. | ||
82 | if (!$readOnly) { | ||
83 | $readOnly = $view->parent->vars['read_only']; | ||
84 | } | ||
85 | } | ||
86 | |||
87 | $view->vars = array_replace($view->vars, array( | ||
88 | 'read_only' => $readOnly, | ||
89 | 'errors' => $form->getErrors(), | ||
90 | 'valid' => $form->isSubmitted() ? $form->isValid() : true, | ||
91 | 'value' => $form->getViewData(), | ||
92 | 'data' => $form->getNormData(), | ||
93 | 'required' => $form->isRequired(), | ||
94 | 'max_length' => $options['max_length'], | ||
95 | 'pattern' => $options['pattern'], | ||
96 | 'size' => null, | ||
97 | 'label_attr' => $options['label_attr'], | ||
98 | 'compound' => $form->getConfig()->getCompound(), | ||
99 | 'method' => $form->getConfig()->getMethod(), | ||
100 | 'action' => $form->getConfig()->getAction(), | ||
101 | )); | ||
102 | } | ||
103 | |||
104 | /** | ||
105 | * {@inheritdoc} | ||
106 | */ | ||
107 | public function finishView(FormView $view, FormInterface $form, array $options) | ||
108 | { | ||
109 | $multipart = false; | ||
110 | |||
111 | foreach ($view->children as $child) { | ||
112 | if ($child->vars['multipart']) { | ||
113 | $multipart = true; | ||
114 | break; | ||
115 | } | ||
116 | } | ||
117 | |||
118 | $view->vars['multipart'] = $multipart; | ||
119 | } | ||
120 | |||
121 | /** | ||
122 | * {@inheritdoc} | ||
123 | */ | ||
124 | public function setDefaultOptions(OptionsResolverInterface $resolver) | ||
125 | { | ||
126 | parent::setDefaultOptions($resolver); | ||
127 | |||
128 | // Derive "data_class" option from passed "data" object | ||
129 | $dataClass = function (Options $options) { | ||
130 | return isset($options['data']) && is_object($options['data']) ? get_class($options['data']) : null; | ||
131 | }; | ||
132 | |||
133 | // Derive "empty_data" closure from "data_class" option | ||
134 | $emptyData = function (Options $options) { | ||
135 | $class = $options['data_class']; | ||
136 | |||
137 | if (null !== $class) { | ||
138 | return function (FormInterface $form) use ($class) { | ||
139 | return $form->isEmpty() && !$form->isRequired() ? null : new $class(); | ||
140 | }; | ||
141 | } | ||
142 | |||
143 | return function (FormInterface $form) { | ||
144 | return $form->getConfig()->getCompound() ? array() : ''; | ||
145 | }; | ||
146 | }; | ||
147 | |||
148 | // For any form that is not represented by a single HTML control, | ||
149 | // errors should bubble up by default | ||
150 | $errorBubbling = function (Options $options) { | ||
151 | return $options['compound']; | ||
152 | }; | ||
153 | |||
154 | // BC with old "virtual" option | ||
155 | $inheritData = function (Options $options) { | ||
156 | if (null !== $options['virtual']) { | ||
157 | // Uncomment this as soon as the deprecation note should be shown | ||
158 | // trigger_error('The form option "virtual" is deprecated since version 2.3 and will be removed in 3.0. Use "inherit_data" instead.', E_USER_DEPRECATED); | ||
159 | return $options['virtual']; | ||
160 | } | ||
161 | |||
162 | return false; | ||
163 | }; | ||
164 | |||
165 | // If data is given, the form is locked to that data | ||
166 | // (independent of its value) | ||
167 | $resolver->setOptional(array( | ||
168 | 'data', | ||
169 | )); | ||
170 | |||
171 | $resolver->setDefaults(array( | ||
172 | 'data_class' => $dataClass, | ||
173 | 'empty_data' => $emptyData, | ||
174 | 'trim' => true, | ||
175 | 'required' => true, | ||
176 | 'read_only' => false, | ||
177 | 'max_length' => null, | ||
178 | 'pattern' => null, | ||
179 | 'property_path' => null, | ||
180 | 'mapped' => true, | ||
181 | 'by_reference' => true, | ||
182 | 'error_bubbling' => $errorBubbling, | ||
183 | 'label_attr' => array(), | ||
184 | 'virtual' => null, | ||
185 | 'inherit_data' => $inheritData, | ||
186 | 'compound' => true, | ||
187 | 'method' => 'POST', | ||
188 | // According to RFC 2396 (http://www.ietf.org/rfc/rfc2396.txt) | ||
189 | // section 4.2., empty URIs are considered same-document references | ||
190 | 'action' => '', | ||
191 | 'auto_initialize' => true, | ||
192 | )); | ||
193 | |||
194 | $resolver->setAllowedTypes(array( | ||
195 | 'label_attr' => 'array', | ||
196 | )); | ||
197 | } | ||
198 | |||
199 | /** | ||
200 | * {@inheritdoc} | ||
201 | */ | ||
202 | public function getParent() | ||
203 | { | ||
204 | return null; | ||
205 | } | ||
206 | |||
207 | /** | ||
208 | * {@inheritdoc} | ||
209 | */ | ||
210 | public function getName() | ||
211 | { | ||
212 | return 'form'; | ||
213 | } | ||
214 | } | ||