0

Phil Sturgeon による Modular Extensions HMVC と Template ライブラリを使用しています。モジュールのコントローラーで $this->template を使用するにはどうすればよいですか。append_metadata() メソッドを使用して、いくつかのモジュールの JavaScript ファイルを HTML レイアウトの先頭にロードしたいと考えています。

実行順の例:

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 に答える