是否可以删除之前添加的脚本?
$this->view->headScript()->appendFile("/js/my.js");
这里的情况是在我的Bootstrap.php中添加了几个JavaScript文件,如上例所示,但在特定的控制器中,我希望不加载一个特定的JavaScript文件.有没有办法在启动控制器期间删除它?
我正在寻找这样的东西.
$this->view->headScript()->removeFile("/js/my.js");
解决方法:
这有效,但实际上并不是一个好的做法,而是出于特殊目的.我建议首先尝试不加载不需要的脚本.
随后可以使用类似这样的函数删除脚本.
/**
* Removes a previously appended script file.
*
* @param string $src The source path of the script file.
* @return boolean Returns TRUE, if the removal has been a success.
*/
public function removeScript($src) {
$headScriptContainer = Zend_View_Helper_Placeholder_Registry::getRegistry()
->getContainer("Zend_View_Helper_HeadScript");
$iter = $headScriptContainer->getIterator();
$success = FALSE;
foreach ($iter as $k => $value) {
if(strpos($value->attributes["src"], $src) !== FALSE) {
$iter->offsetUnset($k);
$success = TRUE;
}
}
Zend_View_Helper_Placeholder_Registry::getRegistry()
->setContainer("Zend_View_Helper_HeadScript",$headScriptContainer);
return $success;
}
请注意,此处使用了strpos函数.这将删除其路径中包含$src的每个脚本.当然,您可以根据自己的需要进行更改.
标签:php,javascript,zend-framework
来源: https://codeday.me/bug/20190624/1283028.html