0

我使用 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() 存在。

4

1 回答 1

0

如果我没记错的话,append_metadata 方法在 PyroCMS 中也使用的最后一个版本的库中已被 appens_js 取代。

要使用它,您需要:

$this->template
              ->appens_js('your file_name here')
              ->build('your view here');

如果 append_js 不起作用,只需将其替换为append_metadata

于 2012-08-10T15:39:47.803 回答