【问题标题】:Dynamic Navigation with Mustache Templating带有 Mustache 模板的动态导航
【发布时间】:2015-01-23 23:25:56
【问题描述】:

我已经使用 mustache.php 创建了一个模板,并且希望根据单个文件夹中的文件动态创建我的导航。我正在为这个项目使用 codeigniter。

我有一个获取文件并将它们转换为链接的函数,这个函数被称为create_front_navigation()

public function create_front_navigation()
{
    $map = directory_map(APPPATH.'views/front/', 1);

    $files = '<ul>';

    foreach($map as $map)
    {
        $files = $files.'<li><a href="#">'.str_replace('.php', '', $map).'</a></li>';
    }

    $files = $files.'</ul>';

    return $files;
}

从我的函数调用该函数,该函数收集并创建我的partials 或小胡子翻译,称为create_partials

public function create_partials()
{
    $partials = array(

        'navigation' => $this->create_front_navigation(),
        'site' => 'SaleBolt',
        'firstname' => 'John',
        'visitorNumber' => '6',

    );

    return $partials;
}

然后,所有这些信息都会从将胡须标签实际转换为实际单词的函数中调用。这个函数被简单地称为render()

public function render($template)
{
    $template = $this->mustache->loadTemplate($template);

    $page = $template->render($this->create_partials());

    echo $page;
}

我的问题是,而不是将“导航”呈现为实际的无序列表。 Mustache 只是将其呈现为文本。

所以在我的浏览器中,我看到了这个:

<ul><li><a href="#">about</a></li><li><a href="#">home</a></li></ul>

而不是预期的结果:

  • 关于
  • 首页

我在这里做错了什么? Mustache 是否提供了更好的方法来做这样的事情?我对 Mustache 非常陌生,并且已经学习了几个教程来做到这一点。提前感谢您的帮助!

【问题讨论】:

    标签: php html codeigniter mustache.php


    【解决方案1】:

    默认情况下,Mustache 实现会转义 HTML。 (他们这样做是为了保护您免受用户提交的恶意内容的侵害。)您必须使用单独的变量语法来对包含 HTML 的字符串进行转义。

    请参阅 bobthecow/mustache.php 文档中的 Mustache Tags

    默认情况下,所有变量都是 HTML 转义的。如果要返回未转义的 HTML,请使用三重胡须:{{{ name }}}。

    您也可以使用 & 来取消转义变量:{{& name }}。这在更改分隔符时可能很有用。

    您尚未发布您正在使用的模板,但您需要修改包含 HTML 的变量(例如,{{ navigation }} 应为 {{{ navigation }}})。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-09
      • 1970-01-01
      • 2011-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-22
      相关资源
      最近更新 更多