Symfony检查jQuery是否已经包含在内

有没有办法检查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会阻止他们的行动。

你应该使用自己的支票。

  1. 使用您自己的sfWebResponse
  2. 覆盖addJavascript
  3. 添加支票

因此,在/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 

你完成了。