我使用 Phil Sturgeon 的模块化扩展 HMVC 和模板库。如何在模块的控制器中使用 $this->template。我想使用 append_metadata() 方法在 html 布局的头部加载一些模块的 javascript 文件。
执行顺序示例:
controllers/home/home.php - 主控制器
class Home extends MX_Controller {
function index()
{
$this->template->build('login');
}
}
views\layouts\default.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>
modules\navigation_panels\controllers\TopBar.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() 存在。