【问题标题】:Using append_metadata() method in a module controller在模块控制器中使用 append_metadata() 方法
【发布时间】:2012-08-07 22:45:56
【问题描述】:

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

【问题讨论】:

    标签: php codeigniter hmvc


    【解决方案1】:

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

    要使用它,您需要:

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

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

    【讨论】:

    • 不,库中不存在 append_js() 方法。 append_metadata() 正在其他文件中工作,但这里的问题是范围 - $this->template 在此上下文中不可见..
    猜你喜欢
    • 2019-04-08
    • 1970-01-01
    • 2015-11-25
    • 1970-01-01
    • 2011-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多