You are here

private function Form::addField in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/symfony/dom-crawler/Form.php \Symfony\Component\DomCrawler\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 446

Class

Form
Form represents an HTML form.

Namespace

Symfony\Component\DomCrawler

Code

private function addField(\DOMElement $node) {
  if (!$node
    ->hasAttribute('name') || !$node
    ->getAttribute('name')) {
    return;
  }
  $nodeName = $node->nodeName;
  if ('select' == $nodeName || 'input' == $nodeName && 'checkbox' == strtolower($node
    ->getAttribute('type'))) {
    $this
      ->set(new Field\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 Field\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')), array(
    'submit',
    'button',
    'image',
  ))) {
    $this
      ->set(new Field\InputFormField($node));
  }
  elseif ('textarea' == $nodeName) {
    $this
      ->set(new Field\TextareaFormField($node));
  }
}