function JsResponse::isRenderable in JS Callback Handler 8.3
Helper method to determine if an array is renderable.
Parameters
array $data: The array to check.
bool $recursive: If TRUE, the entire array (children) is searched, otherwise only the first level is checked.
Return value
bool TRUE if renderable, FALSE if not.
2 calls to JsResponse::isRenderable()
- JsResponse::render in src/
JsResponse.php  - Processes the content for output.
 - JsResponse::setContent in src/
JsResponse.php  
File
- src/
JsResponse.php, line 113  
Class
- JsResponse
 - JsResponse.
 
Namespace
Drupal\jsCode
function isRenderable($data = [], $recursive = TRUE) {
  // Immediately return if not an array.
  if (!is_array($data)) {
    return FALSE;
  }
  static $keys = [
    '#type',
    '#theme',
    '#theme_wrappers',
    '#children',
    '#markup',
    '#pre_render',
    '#post_render',
    '#lazy_builder',
    '#attached',
  ];
  if (array_intersect($keys, Element::properties($data))) {
    return TRUE;
  }
  if ($recursive) {
    // Cannot use \Drupal\Core\Render\Element::children here since that can
    // potentially trigger E_USER_ERROR if the array is invalid. Instead,
    // just filter the array by checking if the key is a "child" key.
    $children = array_filter(array_keys($data), '\\Drupal\\Core\\Render\\Element::child');
    foreach ($children as $child) {
      if (is_array($data[$child]) && $this
        ->isRenderable($data[$child])) {
        return TRUE;
      }
    }
  }
  return FALSE;
}