2014-10-22 7 views
5

Die cakephp docs sagen:CakePHP: Fügen Sie js in Header aus dem Blickfeld Datei

standardmäßig Script-Tags in das Dokument inline hinzugefügt werden. Wenn Sie dies überschreiben, indem Sie $ options ['inline'] auf false setzen, werden die Script-Tags stattdessen zum Skriptblock hinzugefügt, den Sie an anderer Stelle im Dokument ausdrucken können.

Also meiner Ansicht Datei (.ctp) Ich habe:

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

Und in meinem Layout, in dem Head-Tag:

echo $this->fetch('script');

Aber das Script-Tag druckt inline und nicht im Kopf aus. Wenn ich das Echo von der Zeile in meiner Ansichtsdatei vermisse, wird das Skript überhaupt nicht in meinem HTML ausgedruckt.

Jede Hilfe wäre dankbar erhalten.

PAE

Antwort

9

Sie haben false in Anführungszeichen, so PHP ist es als string und kein boolean Behandlung. Es sollte sein:

echo $this->Html->script('//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js', array('inline' => false)); 
+0

und ich starrte auf die stundenlang! Ich hätte es wirklich besser wissen sollen, oder? Danke vielmals. – Peter

1

Warum gehst du auf viele Attribute? einfach URL

echo $this->Html->script('http://code.jquery.com/jquery.min.js'); 
+0

Wenn Sie dies in der Ansicht verwenden, wird es inline gedruckt, die Ansicht befindet sich außerhalb des Kopf-Tags, OP möchte dies nicht. – HelloSpeakman

3

einfach in Ihrer Ansicht ctp-Datei. :)

<?php echo $this->Html->script('//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js'); ?> 
6

Ich möchte erweitern und erwähnen ein paar Dinge zu diesem Thema.

Inline Script

Dies wird den Script-Tag inline drucken, die nicht immer erwünscht ist.

<?php echo $this->Html->script('script.name'); ?> 

Nicht-Inline-Script

Dies wird das Skript platzieren, wo immer Sie $ this-> holen ('script') in Ihrer Layout-Datei, in der Regel in dem Kopf Ihrer Seite platziert. (Wie von ub3rst4r Sie als String falsch waren vorbei)

<?php echo $this->Html->script('script.name', array('inline' => false)); ?> 

Block-Script

Dies könnte eine viel nützliche Version für viele Leute sein, Sie einen Skriptblock platzieren können in jede Layout-Datei (so viele wie Sie möchten). Ich zeige dir ein Beispiel und nenne es scriptBottom, um vor meinem Körperende zu gehen.

<?php echo $this->fetch('scriptBottom'); ?> 

Dann können Sie den Block auf die Skriptmethode wie solche

<?php $this->Html->script('script.name', array('block' => 'scriptBottom')); ?> 

Hoffnung passieren, das hilft

+0

Ja, es hilft. Vielen Dank. Ich finde das CakePHP-Buch in diesem Bereich etwas schwach. – Peter

+0

Sie müssen das Skript nicht einmal "echo" machen, da es gepuffert und später wiedergegeben wird, wo der 'scriptBottom' hingeht. – Petruza

+0

Gerade getestet und es funktionierte, aktualisiert die Antwort entsprechend, Prost. – HelloSpeakman

1

In cakephp 3 anstelle von array ('inline' => false) Sie verwenden sollten, Array ('Block' => True) wenn jemand nach dieser Antwort sucht wie ich es war. Und Sie müssen das Skript nicht Echo an der Spitze Ihrer CtP-Datei können Sie nur innerhalb php platzieren Syntax heißt

<?php $this->Html->script('//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js', ['block' => true]); ?>

Verwandte Themen