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


Symfony check whether jQuery already included

有没有办法在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 

大功告成。