带有 Mustache 模板的动态导航
Dynamic Navigation with Mustache Templating
我已经使用 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;
}
我的问题是,而不是将 "navigation" 呈现为实际的无序列表。 Mustache 只是将其呈现为文本。
所以在我的浏览器中,我看到了这个:
<ul><li><a href="#">about</a></li><li><a href="#">home</a></li></ul>
而不是预期的结果:
- 关于
- 家
我在这里做错了什么? Mustache 是否提供了更好的方法来做这样的事情?我对 Mustache 非常陌生,并且已经学习了几个教程才能做到这一点。预先感谢您的帮助!
默认情况下,Mustache 实现转义 HTML。 (他们这样做是为了保护您免受用户提交的恶意内容的侵害。)您必须使用单独的变量语法来转义包含 HTML.
的字符串
请参阅 bobthecow/mustache 中的 Mustache Tags。php 文档:
All variables are HTML escaped by default. If you want to return unescaped HTML, use the triple mustache: {{{ name }}}.
You can also use & to unescape a variable: {{& name }}. This may be useful when changing delimiters.
您尚未发布正在使用的模板,但您需要修改包含 HTML 的变量(例如,{{ navigation }}
应为 {{{ navigation }}}
)。
我已经使用 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;
}
我的问题是,而不是将 "navigation" 呈现为实际的无序列表。 Mustache 只是将其呈现为文本。
所以在我的浏览器中,我看到了这个:
<ul><li><a href="#">about</a></li><li><a href="#">home</a></li></ul>
而不是预期的结果:
- 关于
- 家
我在这里做错了什么? Mustache 是否提供了更好的方法来做这样的事情?我对 Mustache 非常陌生,并且已经学习了几个教程才能做到这一点。预先感谢您的帮助!
默认情况下,Mustache 实现转义 HTML。 (他们这样做是为了保护您免受用户提交的恶意内容的侵害。)您必须使用单独的变量语法来转义包含 HTML.
的字符串请参阅 bobthecow/mustache 中的 Mustache Tags。php 文档:
All variables are HTML escaped by default. If you want to return unescaped HTML, use the triple mustache: {{{ name }}}.
You can also use & to unescape a variable: {{& name }}. This may be useful when changing delimiters.
您尚未发布正在使用的模板,但您需要修改包含 HTML 的变量(例如,{{ navigation }}
应为 {{{ navigation }}}
)。