Elgg\Ajax\Service::decodeJson PHP Method

decodeJson() public method

Attempt to JSON decode the given string
public decodeJson ( mixed $string ) : mixed
$string mixed Output string
return mixed
    public function decodeJson($string)
    {
        if (!is_string($string)) {
            return $string;
        }
        $object = json_decode($string);
        return $object === null ? $string : $object;
    }

Usage Example

コード例 #1
0
ファイル: ResponseFactory.php プロジェクト: elgg/elgg
 /**
  * Wraps content for compability with legacy Elgg ajax calls
  *
  * @param string $content     Response content
  * @param string $forward_url Forward URL
  * @return string
  */
 public function wrapLegacyAjaxResponse($content = '', $forward_url = REFERRER)
 {
     $content = $this->stringify($content);
     if ($forward_url === REFERRER) {
         $forward_url = $this->request->headers->get('Referer');
     }
     // always pass the full structure to avoid boilerplate JS code.
     $params = ['output' => '', 'status' => 0, 'system_messages' => ['error' => [], 'success' => []], 'current_url' => current_page_url(), 'forward_url' => elgg_normalize_url($forward_url)];
     $params['output'] = $this->ajax->decodeJson($content);
     // Grab any system messages so we can inject them via ajax too
     $system_messages = _elgg_services()->systemMessages->dumpRegister();
     if (isset($system_messages['success'])) {
         $params['system_messages']['success'] = $system_messages['success'];
     }
     if (isset($system_messages['error'])) {
         $params['system_messages']['error'] = $system_messages['error'];
         $params['status'] = -1;
     }
     $response_type = $this->parseContext();
     list($service, $name) = explode(':', $response_type);
     $context = [$service => $name];
     $params = $this->hooks->trigger('output', 'ajax', $context, $params);
     return $this->stringify($params);
 }