Classes List

Symfony\Component\DomCrawler\Field\FormField

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
 25 
 26 
 27 
 28 
 29 
 30 
 31 
 32 
 33 
 34 
 35 
 36 
 37 
 38 
 39 
 40 
 41 
 42 
 43 
 44 
 45 
 46 
 47 
 48 
 49 
 50 
 51 
 52 
 53 
 54 
 55 
 56 
 57 
 58 
 59 
 60 
 61 
 62 
 63 
 64 
 65 
 66 
 67 
 68 
 69 
 70 
 71 
 72 
 73 
 74 
 75 
 76 
 77 
 78 
 79 
 80 
 81 
 82 
 83 
 84 
 85 
 86 
 87 
 88 
 89 
 90 
 91 
 92 
 93 
 94 
 95 
 96 
 97 
 98 
 99 
 100 
 101 
 102 
 103 
 104 
 105 
 106 
 107 
 108 
 109 
 110 
 111 
 112 
 113 
 114 
 115 
 116 
 117 
 118 
 119 
 120 
 121 
 122 
 123 
 124 
 125 
 126 
 127 
 128 
 129 
 130 
 131 
 132 
 133 
 134 
 135 
<?php

/* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */


namespace Symfony\Component\DomCrawler\Field;

/** * FormField is the abstract class for all form fields. * * @author Fabien Potencier <fabien@symfony.com> */
abstract class FormField
{
    /** * @var \DOMElement */
    protected $node;
    /** * @var string */
    protected $name;
    /** * @var string */
    protected $value;
    /** * @var \DOMDocument */
    protected $document;
    /** * @var \DOMXPath */
    protected $xpath;
    /** * @var bool */
    protected $disabled;

    /** * @param \DOMElement $node The node associated with this field */
    public function __construct(\DOMElement $node)
    {
        $this->node = $node;
        $this->name = $node->getAttribute('name');
        $this->xpath = new \DOMXPath($node->ownerDocument);

        $this->initialize();
    }

    /** * Returns the label tag associated to the field or null if none. * * @return \DOMElement|null */
    public function getLabel()
    {
        $xpath = new \DOMXPath($this->node->ownerDocument);

        if ($this->node->hasAttribute('id')) {
            $labels = $xpath->query(sprintf('descendant::label[@for="%s"]'$this->node->getAttribute('id')));
            if ($labels->length > 0) {
                return $labels->item(0);
            }
        }

        $labels = $xpath->query('ancestor::label[1]'$this->node);
        if ($labels->length > 0) {
            return $labels->item(0);
        }
    }

    /** * Returns the name of the field. * * @return string The name of the field */
    public function getName()
    {
        return $this->name;
    }

    /** * Gets the value of the field. * * @return string|array The value of the field */
    public function getValue()
    {
        return $this->value;
    }

    /** * Sets the value of the field. * * @param string $value The value of the field */
    public function setValue($value)
    {
        $this->value = (string) $value;
    }

    /** * Returns true if the field should be included in the submitted values. * * @return bool true if the field should be included in the submitted values, false otherwise */
    public function hasValue()
    {
        return true;
    }

    /** * Check if the current field is disabled. * * @return bool */
    public function isDisabled()
    {
        return $this->node->hasAttribute('disabled');
    }

    /** * Initializes the form field. */
    abstract protected function initialize();
}