Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. Form.php

function Form::addField

1 call to Form::addField()
Form::initialize in vendor/symfony/dom-crawler/Form.php
Adds form elements related to this form.

File

vendor/symfony/dom-crawler/Form.php, line 438

Class

Form
Form represents an HTML form.

Namespace

Symfony\Component\DomCrawler

Code

private function addField(\DOMElement $node) : void {
    if (!$node->hasAttribute('name') || !$node->getAttribute('name')) {
        return;
    }
    $nodeName = $node->nodeName;
    if ('select' == $nodeName || 'input' == $nodeName && 'checkbox' == strtolower($node->getAttribute('type'))) {
        $this->set(new ChoiceFormField($node));
    }
    elseif ('input' == $nodeName && 'radio' == strtolower($node->getAttribute('type'))) {
        // there may be other fields with the same name that are no choice
        // fields already registered (see https://github.com/symfony/symfony/issues/11689)
        if ($this->has($node->getAttribute('name')) && $this->get($node->getAttribute('name')) instanceof ChoiceFormField) {
            $this->get($node->getAttribute('name'))
                ->addChoice($node);
        }
        else {
            $this->set(new ChoiceFormField($node));
        }
    }
    elseif ('input' == $nodeName && 'file' == strtolower($node->getAttribute('type'))) {
        $this->set(new Field\FileFormField($node));
    }
    elseif ('input' == $nodeName && !\in_array(strtolower($node->getAttribute('type')), [
        'submit',
        'button',
        'image',
    ])) {
        $this->set(new Field\InputFormField($node));
    }
    elseif ('textarea' == $nodeName) {
        $this->set(new Field\TextareaFormField($node));
    }
}
RSS feed
Powered by Drupal