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

时间:2012-08-10 15:35:01

标签: php codeigniter hmvc

我使用Phil Sturgeon的Modular Extensions HMVC和模板库。 如何在模块的控制器中使用$ this->模板。我想用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- topbar模块的控制器

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()方法存在。

1 个答案:

答案 0 :(得分:0)

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

要使用它,您需要:

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

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

即可