CakePHP 2 $ this-> Html-> ordem de script

Estou tentando inserir arquivos JS na visualização, mas eles estão sendo inseridos na ordem errada.

No meu default.ctp eu tenho isso

$this->Html->script(array( 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js', 'global' ), array('inline'=>false)); echo $this->fetch('script'); 

Na minha opinião, tenho isso:

 $this->Html->script('jquery.fancybox.pack', array('inline' => false)); 

Mas quando eu vejo a fonte, sai assim:

    

Qual é, obviamente, a ordem errada para que o plugin jQuery não esteja funcionando.

O que estou fazendo de errado?

Geralmente, eu ecoo os scripts necessários no layout (em vez de adicioná-los ao buffer) e depois o bloco de script (scripts em buffer) depois. Isso garante que os scripts necessários para cada visualização sejam repetidos em primeiro lugar. O seu default.ctp seria algo assim:

 // get echoed immediately echo $this->Html->script(array( 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js', 'global' )); // everything else from the view, echoed after echo $this->fetch('script'); 

Ou, você pode especificar um bloco especial para seus scripts anteriores.

 echo $this->Html->script(array( 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js', 'global' ), array('block' => 'firstScripts'); echo $this->fetch('css'); echo $this->fetch('firstScripts'); echo $this->fetch('script'); 

Não tenho certeza de quanto tempo você investiu na construção do seu sistema atual, mas você pode tentar usar um auxiliar de carregador de resources hierárquico , em vez de um padrão padrão de boloPHP.

O carregador de resources padrão, infelizmente, não tem como lidar com dependencies entre arquivos diferentes e apenas os carrega na ordem que você fornece (a exibição é analisada antes do layout).

Use isso na seção principal.

  Html-> script ('jquery-1.11.1.js')?> 
  fetch ('script')?>