如何将JSON编码的CSS数据传递到Mustache模板?

时间:2015-06-08 19:09:32

标签: php css json mustache

因此,我们有一些基本的Mustache标记,它应该在{{{override_css}}}中呈现JSON编码的CSS类。

^

以下是我们如何渲染胡须对象:

....
<div class="js-modal-additional hidden-el"
  data-reposition="0"
  data-css="{{{override_css}}}">
</div>
....

不幸的是:

<?php
   ...
   $data->override_css =
   json_encode(
          array(
            'position' => 'fixed',
            'z-index' => 10,
            'top' => 'auto'
          )
   );

   ...
?>

我很抱歉,如果之前有这个,但也许我错过了什么?令人惊讶的是,传递有效的JSON有很多困难。我想过使用preg_replace或其他一些hacky方法,但是现在它不是有效的JSON,不是吗?我需要JS能够从data-css中读取和应用CSS,以便覆盖默认值。有什么可以避免的!重要的标签。把它称为糟糕的设计,但我的手在这里被迫。

但是,非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

您的JSON引号在第一个“{”之后关闭了您的data-css引号。

您需要HTML转义引号。在PHP代码中写:

<?php
   ...
   $data->override_css =
   htmlspecialchars(json_encode(
          array(
            'position' => 'fixed',
            'z-index' => 10,
            'top' => 'auto'
          )
   ));

   ...
?>

它会起作用。