由于HTML和PHP中有多个文件,因此我需要加载两种文件类型(HTML / PHP)。
/**
* Render the provided view.
*
* @param string $view The view to render.
* @param array $args Array of arguments to pass to the view.
*/
public function render($view, $args = []) {
$this->view = $view;
$this->args = $args;
echo $this->twig->render("{$this->view}.html", $this->args);
}
我需要它能够加载HTML和PHP文件,但我似乎无法弄清楚。
谢谢,杰克。
答案 0 :(得分:1)
如果在命名空间的树枝路径中使用模板,则ceejayoz提出的对file_exists
的原始调用将不起作用。然后这样做会更好,因为它首先解析了通过文件加载器的路径:
$view = '';
$loader = $this->twig->getLoader();
if($loader->exists('{$this->view}.html')) {
$view = '{$this->view}.html';
} else if($loader->exists('{$this->view}.php')) {
$view = '{$this->view}.php';
} else {
throw new \RuntimeException('View not found');
}
echo $this->twig->render($view, $args);
答案 1 :(得分:0)
类似的事情应该起作用:
if(file_exists("{$this->view}.html")) {
echo $this->twig->render("{$this->view}.html", $this->args);
} elseif(file_exists("{$this->view}.php")) {
echo $this->twig->render("{$this->view}.php", $this->args);
} else {
throw new Exception('uh oh');
}
也就是说,您可以考虑使用standardizing on the .twig
extension for templates。