在模块控制器中使用 append_metadata() 方法


Using append_metadata() method in a module controller

我使用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