| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 | <?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);        return $labels->length > 0 ? $labels->item(0) : null;    }    /**     * 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|array|bool|null $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();}
 |