mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2025-02-07 12:36:25 +00:00
Merge pull request #6466 from cakephp/2.6-xml-options
Backport _xmlOptions
This commit is contained in:
commit
f82280f654
3 changed files with 80 additions and 3 deletions
|
@ -96,6 +96,76 @@ class XmlViewTest extends CakeTestCase {
|
||||||
$this->assertFalse(isset($View->Html), 'No helper loaded.');
|
$this->assertFalse(isset($View->Html), 'No helper loaded.');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test that rendering with _serialize respects XML options.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testRenderSerializeWithOptions() {
|
||||||
|
$Request = new CakeRequest();
|
||||||
|
$Response = new CakeResponse();
|
||||||
|
$Controller = new Controller($Request, $Response);
|
||||||
|
$data = array(
|
||||||
|
'_serialize' => array('tags'),
|
||||||
|
'_xmlOptions' => array('format' => 'attributes'),
|
||||||
|
'tags' => array(
|
||||||
|
'tag' => array(
|
||||||
|
array(
|
||||||
|
'id' => '1',
|
||||||
|
'name' => 'defect'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'id' => '2',
|
||||||
|
'name' => 'enhancement'
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
$Controller->set($data);
|
||||||
|
$Controller->viewClass = 'Xml';
|
||||||
|
$View = new XmlView($Controller);
|
||||||
|
$result = $View->render();
|
||||||
|
|
||||||
|
$expected = Xml::build(array('response' => array('tags' => $data['tags'])), $data['_xmlOptions'])->asXML();
|
||||||
|
$this->assertSame($expected, $result);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test that rendering with _serialize can work with string setting.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testRenderSerializeWithString() {
|
||||||
|
$Request = new CakeRequest();
|
||||||
|
$Response = new CakeResponse();
|
||||||
|
$Controller = new Controller($Request, $Response);
|
||||||
|
$data = array(
|
||||||
|
'_serialize' => 'tags',
|
||||||
|
'_xmlOptions' => array('format' => 'attributes'),
|
||||||
|
'tags' => array(
|
||||||
|
'tags' => array(
|
||||||
|
'tag' => array(
|
||||||
|
array(
|
||||||
|
'id' => '1',
|
||||||
|
'name' => 'defect'
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'id' => '2',
|
||||||
|
'name' => 'enhancement'
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
$Controller->set($data);
|
||||||
|
$Controller->viewClass = 'Xml';
|
||||||
|
$View = new XmlView($Controller);
|
||||||
|
$result = $View->render();
|
||||||
|
|
||||||
|
$expected = Xml::build($data['tags'], $data['_xmlOptions'])->asXML();
|
||||||
|
$this->assertSame($expected, $result);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test render with an array in _serialize
|
* Test render with an array in _serialize
|
||||||
*
|
*
|
||||||
|
|
|
@ -156,7 +156,7 @@ class Xml {
|
||||||
*
|
*
|
||||||
* ### Options
|
* ### Options
|
||||||
*
|
*
|
||||||
* - `format` If create childs ('tags') or attributes ('attribute').
|
* - `format` If create childs ('tags') or attributes ('attributes').
|
||||||
* - `pretty` Returns formatted Xml when set to `true`. Defaults to `false`
|
* - `pretty` Returns formatted Xml when set to `true`. Defaults to `false`
|
||||||
* - `version` Version of XML document. Default is 1.0.
|
* - `version` Version of XML document. Default is 1.0.
|
||||||
* - `encoding` Encoding of XML document. If null remove from XML header. Default is the some of application.
|
* - `encoding` Encoding of XML document. If null remove from XML header. Default is the some of application.
|
||||||
|
@ -180,7 +180,7 @@ class Xml {
|
||||||
*
|
*
|
||||||
* `<root><tag><id>1</id><value>defect</value>description</tag></root>`
|
* `<root><tag><id>1</id><value>defect</value>description</tag></root>`
|
||||||
*
|
*
|
||||||
* And calling `Xml::fromArray($value, 'attribute');` Will generate:
|
* And calling `Xml::fromArray($value, 'attributes');` Will generate:
|
||||||
*
|
*
|
||||||
* `<root><tag id="1" value="defect">description</tag></root>`
|
* `<root><tag id="1" value="defect">description</tag></root>`
|
||||||
*
|
*
|
||||||
|
@ -229,7 +229,7 @@ class Xml {
|
||||||
* @param DOMDocument $dom Handler to DOMDocument
|
* @param DOMDocument $dom Handler to DOMDocument
|
||||||
* @param DOMElement $node Handler to DOMElement (child)
|
* @param DOMElement $node Handler to DOMElement (child)
|
||||||
* @param array &$data Array of data to append to the $node.
|
* @param array &$data Array of data to append to the $node.
|
||||||
* @param string $format Either 'attribute' or 'tags'. This determines where nested keys go.
|
* @param string $format Either 'attributes' or 'tags'. This determines where nested keys go.
|
||||||
* @return void
|
* @return void
|
||||||
* @throws XmlException
|
* @throws XmlException
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -109,6 +109,10 @@ class XmlView extends View {
|
||||||
/**
|
/**
|
||||||
* Serialize view vars.
|
* Serialize view vars.
|
||||||
*
|
*
|
||||||
|
* ### Special parameters
|
||||||
|
* `_xmlOptions` You can set an array of custom options for Xml::fromArray() this way, e.g.
|
||||||
|
* 'format' as 'attributes' instead of 'tags'.
|
||||||
|
*
|
||||||
* @param array $serialize The viewVars that need to be serialized.
|
* @param array $serialize The viewVars that need to be serialized.
|
||||||
* @return string The serialized data
|
* @return string The serialized data
|
||||||
*/
|
*/
|
||||||
|
@ -131,6 +135,9 @@ class XmlView extends View {
|
||||||
}
|
}
|
||||||
|
|
||||||
$options = array();
|
$options = array();
|
||||||
|
if (isset($this->viewVars['_xmlOptions'])) {
|
||||||
|
$options = $this->viewVars['_xmlOptions'];
|
||||||
|
}
|
||||||
if (Configure::read('debug')) {
|
if (Configure::read('debug')) {
|
||||||
$options['pretty'] = true;
|
$options['pretty'] = true;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue