我正在为客户组件中的视图编写代码,并且需要根据传递给代码的参数引入子模板。如果参数$ p存在,并且可以找到相应的模板,我需要加载它的代码。否则,它需要加载默认模板。
我可以从技术上实现我尝试使用以下代码,但我不喜欢使用异常处理程序来确定模板文件是否存在的想法。是否有一个joomla方法可以首先检查是否存在与$ p对应的模板?
try {
echo $this->loadTemplate($p);
} catch(exception $ex) {
echo $this->loadTemplate("default");
}
答案 0 :(得分:0)
当然,$p
只是一个定义子模板文件名称的字符串。您可以计算文件$p
引用的路径,并检查它是否可用 - 但由于loadTemplate()
执行此操作(同时还检查template overrides和{{3},这有点多余) })。
如果您查看loadTemplate()
的注释,您会看到它会在出错时抛出异常,因此如果您有回退策略,那么您应该捕获异常并实现它。所以,你的方法似乎是正确的方法。
/**
* Load a template file -- first look in the templates folder for an override
*
* @param string $tpl The name of the template source file; automatically searches the template paths and compiles as needed.
*
* @return string The output of the the template script.
*
* @since 12.2
* @throws Exception
*/
public function loadTemplate($tpl = null)
{