Skip to content

Commit 2742ee8

Browse files
author
Oleksii Korshenko
authored
MAGETWO-71062: Remove zend json from json controller #10342
2 parents dc868e6 + dc80f44 commit 2742ee8

File tree

3 files changed

+52
-9
lines changed

3 files changed

+52
-9
lines changed

app/code/Magento/Tax/Controller/Adminhtml/Rate/AjaxLoad.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ class AjaxLoad extends \Magento\Tax\Controller\Adminhtml\Rate
1414
/**
1515
* Json needed for the Ajax Edit Form
1616
*
17-
* @return void
17+
* @return \Magento\Framework\Controller\Result\Json
18+
* @throws \InvalidArgumentException
1819
*/
1920
public function execute()
2021
{

app/code/Magento/Tax/Controller/Adminhtml/Rate/AjaxSave.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ class AjaxSave extends \Magento\Tax\Controller\Adminhtml\Rate
1414
* Save Tax Rate via AJAX
1515
*
1616
* @return \Magento\Framework\Controller\Result\Json
17+
* @throws \InvalidArgumentException
1718
*/
1819
public function execute()
1920
{

lib/internal/Magento/Framework/Controller/Result/Json.php

Lines changed: 49 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,24 +29,65 @@ class Json extends AbstractResult
2929
protected $json;
3030

3131
/**
32-
* @param \Magento\Framework\Translate\InlineInterface $translateInline
32+
* @var \Magento\Framework\Serialize\Serializer\Json
3333
*/
34-
public function __construct(InlineInterface $translateInline)
35-
{
34+
private $serializer;
35+
36+
/**
37+
* @param InlineInterface $translateInline
38+
* @param \Magento\Framework\Serialize\Serializer\Json|null $serializer
39+
* @throws \RuntimeException
40+
*/
41+
public function __construct(
42+
InlineInterface $translateInline,
43+
\Magento\Framework\Serialize\Serializer\Json $serializer = null
44+
) {
3645
$this->translateInline = $translateInline;
46+
$this->serializer = $serializer ?: \Magento\Framework\App\ObjectManager::getInstance()
47+
->get(\Magento\Framework\Serialize\Serializer\Json::class);
3748
}
3849

3950
/**
4051
* Set json data
4152
*
42-
* @param mixed $data
43-
* @param boolean $cycleCheck Optional; whether or not to check for object recursion; off by default
44-
* @param array $options Additional options used during encoding
45-
* @return $this
53+
* @param array|string|\Magento\Framework\DataObject $data
54+
* @param bool $cycleCheck
55+
* @param array $options
56+
* @return Json
57+
* @throws \InvalidArgumentException
58+
* @throws \Magento\Framework\Exception\LocalizedException
59+
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
60+
* @deprecated
61+
* @see Json::setArrayData
62+
* @see Json::setJsonData
4663
*/
4764
public function setData($data, $cycleCheck = false, $options = [])
4865
{
49-
$this->json = \Zend_Json::encode($data, $cycleCheck, $options);
66+
if ($data instanceof \Magento\Framework\DataObject) {
67+
return $this->setArrayData($data->toArray());
68+
}
69+
70+
if (is_array($data)) {
71+
return $this->setArrayData($data);
72+
}
73+
74+
if (is_string($data)) {
75+
return $this->setJsonData($data);
76+
}
77+
78+
throw new \Magento\Framework\Exception\LocalizedException(
79+
new \Magento\Framework\Phrase('Invalid argument type')
80+
);
81+
}
82+
83+
/**
84+
* @param array $data
85+
* @return $this
86+
* @throws \InvalidArgumentException
87+
*/
88+
public function setArrayData(array $data)
89+
{
90+
$this->setJsonData($this->serializer->serialize($data));
5091
return $this;
5192
}
5293

0 commit comments

Comments
 (0)