有没有办法在sfContext中检查jQuery库是否已经添加,用:
sfContext::getInstance()->getResponse()->addJavascript('/js/jquery-1.4.2.min.js');
或
addJavascript('jquery-1.4.2.min.js', sfView::getContext());
或
use_javascript('jquery-1.4.2.min.js');
在模板中?
在我看来,添加更多的jQuery会阻止他们的行动。
您应该使用自己的检查。
- 使用您自己的
sfWebResponse
- 覆盖
addJavascript
- 添加检查
因此/lib/response/
文件夹中创建一个新的myWebResponse.class.php
文件(创建它),使用以下代码:
class myWebResponse extends sfWebResponse
{
public function addJavascript($file, $position = '', $options = array())
{
$this->validatePosition($position);
// check if the file to add is jquery
// nb: you might update the regex
if (preg_match('/jquery/i', $file))
{
// retrieve all loaded js
$files = array_keys($this->getJavascripts());
// check if one them containt jquery
// nb: you might update the regex
$isJquery = preg_grep("/jquery/i", $files);
// jquery found so do not add the file
if ( ! empty($isJquery))
{
return;
}
}
$this->javascripts[$position][$file] = $options;
}
然后,默认使用新响应。在您的apps/frontend/config/factories.yml
中,添加:
all:
response:
class: myWebResponse
大功告成。