[DomCrawler] Fixed incorrect handling of image inputs
This commit is contained in:
parent
6a4d765c43
commit
816cf179ee
@ -384,7 +384,24 @@ class Form extends Link implements \ArrayAccess
|
|||||||
|
|
||||||
// add submitted button if it has a valid name
|
// add submitted button if it has a valid name
|
||||||
if ('form' !== $this->button->nodeName && $this->button->hasAttribute('name') && $this->button->getAttribute('name')) {
|
if ('form' !== $this->button->nodeName && $this->button->hasAttribute('name') && $this->button->getAttribute('name')) {
|
||||||
$this->set(new Field\InputFormField($document->importNode($this->button, true)));
|
if ('input' == $this->button->nodeName && 'image' == $this->button->getAttribute('type')) {
|
||||||
|
$name = $this->button->getAttribute('name');
|
||||||
|
$this->button->setAttribute('value', '0');
|
||||||
|
|
||||||
|
// temporarily change the name of the input node for the x coordinate
|
||||||
|
$this->button->setAttribute('name', $name.'.x');
|
||||||
|
$this->set(new Field\InputFormField($document->importNode($this->button, true)));
|
||||||
|
|
||||||
|
// temporarily change the name of the input node for the y coordinate
|
||||||
|
$this->button->setAttribute('name', $name.'.y');
|
||||||
|
$this->set(new Field\InputFormField($document->importNode($this->button, true)));
|
||||||
|
|
||||||
|
// restore the original name of the input node
|
||||||
|
$this->button->setAttribute('name', $name);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$this->set(new Field\InputFormField($document->importNode($this->button, true)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// find form elements corresponding to the current form
|
// find form elements corresponding to the current form
|
||||||
|
@ -223,6 +223,11 @@ class FormTest extends \PHPUnit_Framework_TestCase
|
|||||||
<input type="submit" name="foobar" value="foobar" />',
|
<input type="submit" name="foobar" value="foobar" />',
|
||||||
array('foobar' => array('InputFormField', 'foobar')),
|
array('foobar' => array('InputFormField', 'foobar')),
|
||||||
),
|
),
|
||||||
|
array(
|
||||||
|
'turns an image input into x and y fields',
|
||||||
|
'<input type="image" name="bar" />',
|
||||||
|
array('bar.x' => array('InputFormField', '0'), 'bar.y' => array('InputFormField', '0')),
|
||||||
|
),
|
||||||
array(
|
array(
|
||||||
'returns textareas',
|
'returns textareas',
|
||||||
'<textarea name="foo">foo</textarea>
|
'<textarea name="foo">foo</textarea>
|
||||||
|
Reference in New Issue
Block a user