Question

I am trying to pull area of a page with AJAX.

In JS I have on click I pass href to PHP; in PHP(located in tools):

<?php  defined('C5_EXECUTE') or die("Access Denied.");
  $path = ($_POST['path']);
  $page = Page::getByPath($path);
  $a = new Area('Main');
  $ret = $a->display($page);
  echo json_encode($ret);
?>

If I make:

echo json_encode($page);

I receive the page so everything working, But when I try to receive an Area I get this error: concrete\elements\block_area_header_view.php on line 5

In this File I found this

$c = Page::getCurrentPage();
$areaStyle = $c->getAreaCustomStyleRule($a);

So as I understand $c is null that why I have this error how can I fix this??

Was it helpful?

Solution

This line of code:

$ret = $a->display($page);

...does not do what you think it does. The "display" function does not return the content -- instead it outputs it to the browser. So your json_encode($ret) is just encoding and echo'ing an empty variable.

To capture the displayed content and put it into a variable, you can use php's output buffering feature, like so:

ob_start();
$a->display($page);
$ret = ob_end_clean();
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top