带小胡子模板的动态导航

时间:2015-01-23 23:25:56

标签: php html codeigniter mustache.php

我已经使用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的{​​{1}}或胡须翻译。

create_partials

然后从实际将胡须标签变为实际单词的函数中调用所有信息。简单地称为此函数public function create_partials() { $partials = array( 'navigation' => $this->create_front_navigation(), 'site' => 'SaleBolt', 'firstname' => 'John', 'visitorNumber' => '6', ); return $partials; }

render()

我的问题是这个,而不是渲染&#34;导航&#34;作为一个实际的无序列表。 Mustache只是将其渲染为文本。

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

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

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

    echo $page;
}

而不是预期的结果:

我在这里做错了什么? Mustache是​​否提供了更好的方法来做这样的事情?我对Mustache非常新,并且已经采取了几个教程来实现这一目标。感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

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

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

  

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

     

你也可以使用&amp; unescape变量:{{&amp;名称 }}。这在更改分隔符时可能很有用。

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