2016-04-24 65 views
0

我想訪問basePath視圖助手inside my Application Module Bootstrap.基本路徑視圖助手

下面是我的應用模塊當前代碼:

public function onBootstrap(MvcEvent $e) 
{ 
    $viewHelperManager = $e->getApplication()->getServiceManager()->get('viewhelpermanager'); 
    $basePath = $viewHelperManager->get('BasePath');   
    $headScript = $viewHelperManager->get('HeadScript'); 
    $headScript->appendFile($basePath->basePath('/js/custom.js')); 
} 

我能得到頭腳本視圖助手添加JavaScript但我無法訪問基本路徑視圖助手

如果你看看代碼,調用是:$basePath->basePath('/js/custom.js')

我該如何做到這一點?

任何幫助,將不勝感激。

回答

-2
$viewHelperManager = $e->getApplication()->getServiceManager()->get('viewhelpermanager');  
$headScript = $viewHelperManager->get('HeadScript');   
$headScript->prependFile($viewHelperManager->getRenderer()->basePath('js/bootstrap.min.js')); 
$headScript->prependFile($viewHelperManager->getRenderer()->basePath('js/jquery.min.js')); 
$headScript->prependFile($viewHelperManager->getRenderer()->basePath('js/respond.min.js'),'text/javascript', array('conditional' => 'lt IE 9')); 
$headScript->prependFile($viewHelperManager->getRenderer()->basePath('js/html5shiv.min.js'),'text/javascript', array('conditional' => 'lt IE 9')); 
1

您在問題中提取幫助器的方式沒有任何問題,唯一的問題是您嘗試調用幫助器方法的方式。

的基本路徑視圖助手是一個可調用的類,你可以調用它的__invoke()方法明確

$basePath = $viewHelperManager->get('BasePath'); 

$basePath->__invoke('js/custom.js'); 

,或者因爲聲明invoke方法允許你調用一個對象就好像它是你可以編寫一個函數像這樣的相同的東西

$basePath = $viewHelperManager->get('BasePath'); 

$basePath('js/custom.js'); 
+0

確切地說,調用是做什麼的? – slicks1

+1

'__invoke'是一個神奇的方法,當你像運行一個函數一樣運行類時,它就會被調用。即'$ basePath($ arg);' –