Skip to content

EscapeJs not works properly #164

@MartkCz

Description

@MartkCz
  • bug report? yes
  • version: v3.0.0.alpha1

Description

{block content}
	<canvas id="canvas"></canvas>

	<script>
		var data = {$data}; // ok
	</script>
{/block}

{block scripts}
	{include parent}
	<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.4.0/Chart.min.js" />

	<script>
		var data = {$data}; // error
		var labels = {$labels}; // error
	</script>
{/block}

Error: Array to string conversion. Because method escapeHtmlText is called:

php latte code:

	public $blocks = [
		'content' => 'blockContent',
		'scripts' => 'blockScripts',
	];

	public $blockTypes = [
		'content' => 'html',
		'scripts' => 'html',
	];


	function main()
	{
		extract($this->params);
		if ($this->getParentName()) return get_defined_vars();
		$this->renderBlock('content', get_defined_vars());
?>

<?php
		$this->renderBlock('scripts', get_defined_vars());
		return get_defined_vars();
	}


	function prepare()
	{
		extract($this->params);
		Nette\Bridges\ApplicationLatte\UIRuntime::initialize($this, $this->parentName, $this->blocks);
		
	}


	function blockContent($_args)
	{
		extract($_args);
?>
	<canvas id="canvas"></canvas>

	<script>
		var data = <?php echo LR\Filters::escapeJs($data) /* line 5 */ ?>;
	</script>
<?php
	}


	function blockScripts($_args)
	{
		extract($_args);
		$this->renderBlockParent('scripts', get_defined_vars());
?>
	<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.4.0/Chart.min.js"></script>

	<script>
		var data = <?php echo LR\Filters::escapeHtmlText($data) /* line 14 */ ?>;
		var labels = <?php echo LR\Filters::escapeHtmlText($labels) /* line 15 */ ?>;
	</script>
<?php
	}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions