mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2025-03-18 07:29:51 +00:00
Fixing XmlHelper overwriting its Xml property when creating an open element with elem()
Fixes #1642
This commit is contained in:
parent
4395e8acc1
commit
12c245609e
2 changed files with 19 additions and 5 deletions
|
@ -38,6 +38,8 @@ class XmlHelper extends AppHelper {
|
||||||
*/
|
*/
|
||||||
var $encoding = 'UTF-8';
|
var $encoding = 'UTF-8';
|
||||||
|
|
||||||
|
var $Xml;
|
||||||
|
var $XmlElement;
|
||||||
/**
|
/**
|
||||||
* Constructor
|
* Constructor
|
||||||
*
|
*
|
||||||
|
@ -136,7 +138,7 @@ class XmlHelper extends AppHelper {
|
||||||
$out = $elem->toString(array('cdata' => $cdata, 'leaveOpen' => !$endTag));
|
$out = $elem->toString(array('cdata' => $cdata, 'leaveOpen' => !$endTag));
|
||||||
|
|
||||||
if (!$endTag) {
|
if (!$endTag) {
|
||||||
$this->Xml =& $elem;
|
$this->XmlElement =& $elem;
|
||||||
}
|
}
|
||||||
return $out;
|
return $out;
|
||||||
}
|
}
|
||||||
|
@ -148,9 +150,10 @@ class XmlHelper extends AppHelper {
|
||||||
* @access public
|
* @access public
|
||||||
*/
|
*/
|
||||||
function closeElem() {
|
function closeElem() {
|
||||||
$name = $this->Xml->name();
|
$elem = (empty($this->XmlElement)) ? $this->Xml : $this->XmlElement;
|
||||||
if ($parent =& $this->Xml->parent()) {
|
$name = $elem->name();
|
||||||
$this->Xml =& $parent;
|
if ($parent =& $elem->parent()) {
|
||||||
|
$this->XmlElement =& $parent;
|
||||||
}
|
}
|
||||||
return '</' . $name . '>';
|
return '</' . $name . '>';
|
||||||
}
|
}
|
||||||
|
|
|
@ -159,7 +159,8 @@ class XmlHelperTest extends CakeTestCase {
|
||||||
$result .= $this->Xml->closeElem();
|
$result .= $this->Xml->closeElem();
|
||||||
$this->assertEqual($result, $expected);
|
$this->assertEqual($result, $expected);
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
|
/**
|
||||||
* testRenderElementWithComplexContent method
|
* testRenderElementWithComplexContent method
|
||||||
*
|
*
|
||||||
* @access public
|
* @access public
|
||||||
|
@ -284,4 +285,14 @@ class XmlHelperTest extends CakeTestCase {
|
||||||
$expected = '<?xml encoding="UTF-8" someOther="value" ?>';
|
$expected = '<?xml encoding="UTF-8" someOther="value" ?>';
|
||||||
$this->assertIdentical($result, $expected);
|
$this->assertIdentical($result, $expected);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* test that calling elem() and then header() doesn't break
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
function testElemThenHeader() {
|
||||||
|
$this->Xml->elem('test', array(), 'foo', false);
|
||||||
|
$this->assertPattern('/<\?xml/', $this->Xml->header());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue