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

时间:2012-05-30 09:53:18

标签: php jquery symfony1 symfony-1.4

有没有办法检查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 个答案:

答案 0 :(得分:2)

您应该使用自己的支票。

  1. 使用您自己的sfWebResponse
  2. 覆盖addJavascript
  3. 添加支票
  4. 所以在myWebResponse.class.php文件夹中创建一个新的/lib/response/文件(创建它),使用以下代码:

    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 
    

    你已经完成了。