* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Form\Extension\Core\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\FormInterface; use Symfony\Component\Form\FormView; use Symfony\Component\OptionsResolver\OptionsResolver; /** * Encapsulates common logic of {@link FormType} and {@link ButtonType}. * * This type does not appear in the form's type inheritance chain and as such * cannot be extended (via {@link \Symfony\Component\Form\FormExtensionInterface}) nor themed. * * @author Bernhard Schussek */ abstract class BaseType extends AbstractType { /** * {@inheritdoc} */ public function buildForm(FormBuilderInterface $builder, array $options) { $builder->setDisabled($options['disabled']); $builder->setAutoInitialize($options['auto_initialize']); } /** * {@inheritdoc} */ public function buildView(FormView $view, FormInterface $form, array $options) { $name = $form->getName(); $blockName = $options['block_name'] ?: $form->getName(); $translationDomain = $options['translation_domain']; $labelFormat = $options['label_format']; if ($view->parent) { if ('' !== ($parentFullName = $view->parent->vars['full_name'])) { $id = sprintf('%s_%s', $view->parent->vars['id'], $name); $fullName = sprintf('%s[%s]', $parentFullName, $name); $uniqueBlockPrefix = sprintf('%s_%s', $view->parent->vars['unique_block_prefix'], $blockName); } else { $id = $name; $fullName = $name; $uniqueBlockPrefix = '_'.$blockName; } if (null === $translationDomain) { $translationDomain = $view->parent->vars['translation_domain']; } if (!$labelFormat) { $labelFormat = $view->parent->vars['label_format']; } } else { $id = $name; $fullName = $name; $uniqueBlockPrefix = '_'.$blockName; // Strip leading underscores and digits. These are allowed in // form names, but not in HTML4 ID attributes. // http://www.w3.org/TR/html401/struct/global.html#adef-id $id = ltrim($id, '_0123456789'); } $blockPrefixes = array(); for ($type = $form->getConfig()->getType(); null !== $type; $type = $type->getParent()) { array_unshift($blockPrefixes, $type->getBlockPrefix()); } $blockPrefixes[] = $uniqueBlockPrefix; $view->vars = array_replace($view->vars, array( 'form' => $view, 'id' => $id, 'name' => $name, 'full_name' => $fullName, 'disabled' => $form->isDisabled(), 'label' => $options['label'], 'label_format' => $labelFormat, 'multipart' => false, 'attr' => $options['attr'], 'block_prefixes' => $blockPrefixes, 'unique_block_prefix' => $uniqueBlockPrefix, 'translation_domain' => $translationDomain, // Using the block name here speeds up performance in collection // forms, where each entry has the same full block name. // Including the type is important too, because if rows of a // collection form have different types (dynamically), they should // be rendered differently. // https://github.com/symfony/symfony/issues/5038 'cache_key' => $uniqueBlockPrefix.'_'.$form->getConfig()->getType()->getBlockPrefix(), )); } /** * {@inheritdoc} */ public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults(array( 'block_name' => null, 'disabled' => false, 'label' => null, 'label_format' => null, 'attr' => array(), 'translation_domain' => null, 'auto_initialize' => true, )); $resolver->setAllowedTypes('attr', 'array'); } } __halt_compiler();----SIGNATURE:----VR5dFZsPGQGp9p6IltDPOKkeY4NxGM9+Zw/yXjqHqrS5gEfBxmVzXIj6ll11IqyCxuErON6W+BPXz4GSPWUeV08bNZzF3PPl/8pLqA9HeC2majMK8BMaIhxFWQnWb4OBo+s9xYBVpqkkMwGDen0dGj9PKii7lROiZKzLD9Le0pIzvdsGG0Sbj1w6QNGxjcoWjjx+F5P6g8aC/4amrPqNgWHZzfv7Ts6fDvnDWRyj/hD4pjo1nio3zwvkyVdGyqTmQDTnTlutIdUyQUcU8nvZg9onH/VioJeP13kkIRl1kdySxctWxnPZcucgoswpfSYRHyv/AAoD0QtBBeGBSZ/gpymjs5y7uEgEW7zZYVjOxdPTHZqEzR4LFVmVE/WnW+GspTLvUeTgzACkhKEIYAMId+TaMIByYfHGe7NRPPsgRuyBdlJgR2GlP/ZcEa4XPizuRZ/Nh6lN+IrlzSFivAs/w/fGD7ry9gL1F3iPlcBfMM8GLmw8z/FsAGe6pxQom4vOmbJs1IkxQiEih8CjYnx6VNjBk+RBcUtX3RDORROOAxVQABSlzox7BjPQRKQNfjbo5iwLPkpuNNSUy1vODJ8pDmIfAyb5N56E2PiNucf4SHIteEmnhKwpdl6NMMfQHes7Lbsmjn79WWDcsmtUc1cu7UnDJfdqw+2anH66HTbYX8w=----ATTACHMENT:----NzMxMzI3MzQ1ODU3ODQ2OSA4MDA4MTQyNDgxNjMwNjE0IDc3Mjk3ODQxMDE5MzU3ODI=