2012-08-10 66 views
0

我使用Phil Sturgeon的模塊化擴展HMVC和模板庫。 如何在模塊的控制器中使用$ this-> template。我想用append_metadata()方法在html佈局的頭部加載一些模塊的javascript文件。在模塊控制器中使用append_metadata()方法

在執行順序的例子:

控制器/家/ home.php - 主控制器

class Home extends MX_Controller { 
    function index() 
    { 
    $this->template->build('login'); 
    } 
} 

視圖\佈局\ 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()方法存在。

回答

0

如果我沒有錯,append_metadata方法已被在PyroCMS中使用的庫的最後一個版本中的appens_js替換。

要使用它,你需要:

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

如果append_js doen't工作只是append_metadata

+0

取代它不行,法append_js()在庫中不存在。 append_metadata()在其他文件中工作,但這裏的問題是範圍 - $ this->模板在此上下文中不可見。 – 2012-08-10 15:45:54

相關問題