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\DomCrawlerCode
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));
}
}