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会阻止他们的行动。
你应该使用自己的支票。
- 使用您自己的
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
你完成了。