我使用Phil Sturgeon的模块化扩展HMVC和模板库。如何在模块的控制器中使用$this>模板。我想使用 append_metadata() 方法在 html 布局的头部加载一些模块的 javascript 文件。
按执行顺序显示的示例:
控制器/家庭/家庭.php - 主控制器
class Home extends MX_Controller {
function index()
{
$this->template->build('login');
}
}
视图''布局''默认.php - 默认布局
<html>
<head>
<?php include "'..'partials'head.php"; ?>
</head>
<body>
//calling topbar module
<?php echo Modules::run('navigation_panels/TopBar/render'); ?>
<?php echo $template['body']; ?>
</body>
</html>
模块'avigation_panels''控制器''顶栏.php- 顶栏模块的控制器
class TopBar extends MX_Controller {
public function __construct()
{
parent::__construct();
//want to manipulate the head but template property is not visible
$this->template
->prepend_metadata(generateJavaScriptIncludeTag('TOPBAR_JAVASCRIPT_LOCATION' . 'change_language.js'));
}
public function render()
{
$data['languages'] = $this->language->getOtherLanguageArray();
$this->load->view('TopBar_view', $data);
}
}
这似乎是输出缓冲问题,因为方法 prepend_metadata() 存在。
如果我没记错的话,append_metadata methos 已被 PyroCMS 中使用的库最新版本中的appens_js所取代。
要使用它,您需要:
$this->template
->appens_js('your file_name here')
->build('your view here');
如果append_js不起作用,只需将其替换为append_metadata