|
@@ -12,14 +12,17 @@ trait ExtraDataTrait
|
|
* @var string $extraData
|
|
* @var string $extraData
|
|
*
|
|
*
|
|
* @ORM\Column(type="text", nullable=true)
|
|
* @ORM\Column(type="text", nullable=true)
|
|
- *
|
|
|
|
|
|
+ *
|
|
* @Assert\Callback(
|
|
* @Assert\Callback(
|
|
- * callback={"ExtraDataBundle\Validator\JSONValidator", "validate"},
|
|
|
|
|
|
+ * callback={"ExtraDataBundle\Validator\JSONValidator", "validate"},
|
|
* payload={"field"="extraData"}
|
|
* payload={"field"="extraData"}
|
|
* )
|
|
* )
|
|
*/
|
|
*/
|
|
private $extraData;
|
|
private $extraData;
|
|
-
|
|
|
|
|
|
+ /**
|
|
|
|
+ * @var array Pasa el extra data a un array.
|
|
|
|
+ */
|
|
|
|
+ private $_extraData_array = null;
|
|
|
|
|
|
/**
|
|
/**
|
|
* @return string
|
|
* @return string
|
|
@@ -31,13 +34,13 @@ trait ExtraDataTrait
|
|
|
|
|
|
/**
|
|
/**
|
|
* @param string $extraData
|
|
* @param string $extraData
|
|
- *
|
|
|
|
|
|
+ *
|
|
* @return $this
|
|
* @return $this
|
|
*/
|
|
*/
|
|
public function setExtraData($extraData = null)
|
|
public function setExtraData($extraData = null)
|
|
{
|
|
{
|
|
$this->extraData = $extraData;
|
|
$this->extraData = $extraData;
|
|
-
|
|
|
|
|
|
+ $this->_extraData_array = json_decode($this->extraData, true);
|
|
return $this;
|
|
return $this;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -46,22 +49,25 @@ trait ExtraDataTrait
|
|
*/
|
|
*/
|
|
public function jsonExtraData()
|
|
public function jsonExtraData()
|
|
{
|
|
{
|
|
- return json_decode($this->extraData, true);
|
|
|
|
|
|
+ if ($this->_extraData_array == null) {
|
|
|
|
+ $this->_extraData_array = json_decode($this->extraData, true);
|
|
|
|
+ }
|
|
|
|
+ return $this->_extraData_array;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
* @param mixed $extraData
|
|
* @param mixed $extraData
|
|
- *
|
|
|
|
|
|
+ *
|
|
* @return ExtraDataTrait
|
|
* @return ExtraDataTrait
|
|
*/
|
|
*/
|
|
public function setJsonExtraData($extraData)
|
|
public function setJsonExtraData($extraData)
|
|
{
|
|
{
|
|
return $this->setExtraData(json_encode($extraData));
|
|
return $this->setExtraData(json_encode($extraData));
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* @param string $key
|
|
* @param string $key
|
|
- *
|
|
|
|
|
|
+ *
|
|
* @return mixed
|
|
* @return mixed
|
|
*/
|
|
*/
|
|
public function getData($key)
|
|
public function getData($key)
|
|
@@ -71,8 +77,30 @@ trait ExtraDataTrait
|
|
if (isset($extraData[$key])) {
|
|
if (isset($extraData[$key])) {
|
|
$value = $extraData[$key];
|
|
$value = $extraData[$key];
|
|
}
|
|
}
|
|
-
|
|
|
|
return $value;
|
|
return $value;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public function __call($name, $arguments)
|
|
|
|
+ {
|
|
|
|
+ if (substr($name, 0, 3) == 'get') {
|
|
|
|
+ return $this->__get(substr($name, 3));
|
|
|
|
+ } else if (substr($name, 0, 3) == 'set') {
|
|
|
|
+ return $this->__set(substr($name, 3), $arguments);
|
|
|
|
+ } else {
|
|
|
|
+ throw new \Exception("ExtraData __call not support call $name");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public function __get($name)
|
|
|
|
+ {
|
|
|
|
+ return $this->getData($name);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public function __set($name, $arguments)
|
|
|
|
+ {
|
|
|
|
+ $extra = $this->jsonExtraData();
|
|
|
|
+ $extra[$name] = $arguments;
|
|
|
|
+ $this->extraData = $this->setJsonExtraData($extra);
|
|
|
|
+ return $this;
|
|
|
|
+ }
|
|
}
|
|
}
|