Empfehlungen: Erweiterte Suche

Fehler beim Aufruf des JavaScript-Helpers

Unterstützung der Daten-Formatierung in den Views (DRY)

Fehler beim Aufruf des JavaScript-Helpers

Beitragvon getit » Mo 22. Dez 2008, 13:16

Hallo,

ich bin noch blutiger Anfänger - also sorry für die vielleicht blöde Frage.

Ich versuche gerade in meinen View mithilfe des JavaScript-Helpers eine externe js-Datei zu laden.
Ich poste hier mal den kompletten View:
Code: Alles auswählen

<?php $javascript->link("test", false); ?>
<h2>Jobs</h2>
<table>
    <tr>
        <th>ID</th>
        <th>Firma</th>
        <th>Titel</th>
        <th>Angebot vom</th>
        <th>zuletzt aktualisiert</th>
        <th>Actions</th>
    </tr>
<?php foreach ($jobs as $job) { ?>
    <tr>
        <td><?php echo $job['Job']['id']; ?></td>
        <td><?php echo $job['Company']['name']; ?></td>
        <td><?php echo $job['Job']['title']; ?></td>
        <td><?php echo $job['Job']['created']; ?></td>
        <td><?php echo $job['Job']['modified']; ?></td>
        <td>
            <?php
            echo $html->link("Details", "/jobs/view/" . $job['Job']['id']);
            echo " " . $html->link("bearbeiten", "/jobs/edit/" . $job['Job']['id']);
            echo " " . $html->link("löschen", "/jobs/delete/" . $job['Job']['id']);
            ?>
        </td>
    </tr>
<?php } ?>
</table>
 


Probleme macht hier nur die 1. Zeile (<?php $javascript->link("test", false); ?>).
Eigentlich sollte hier, nur für diesen View, die Datei test.js aus dem Verzeichnis /app/webroot/js/ geladen werden.
Ich erhalte aber im Browser nur folgenden Fehler:
Notice (8): Undefined variable: javascript [APP\views\jobs\index.ctp, line 1]
Fatal error: Call to a member function link() on a non-object in C:\Programme\WAMP\Testordner\cakeTEST\app\views\jobs\index.ctp on line 1


Was läuft hier falsch?
getit
 
Beiträge: 105
Registriert: Mo 22. Dez 2008, 13:06
CakePHP-Version: 1.2.1.8004
OS: Vista

Re: Fehler beim Aufruf des JavaScript-Helpers

Beitragvon Mathias » Mo 22. Dez 2008, 14:00

Ich kann mich irren, aber werden solche Sachen nicht im <head>-Tag deklariert?

try this:
<?php echo $javascript->link("test", false); ?>
cheers
Benutzeravatar
Mathias
 
Beiträge: 225
Registriert: Mi 4. Jun 2008, 22:30
Wohnort: Berlin
CakePHP-Version: 1.3.x
OS: OS X 10.6.x

Re: Fehler beim Aufruf des JavaScript-Helpers

Beitragvon getit » Mo 22. Dez 2008, 21:05

Hi,

wo im Header?

Meinst du in der default.ctp (/cake/libs/view/layouts/).
Aber ich will es ja nicht global für alle Views ändern, sondern nur für einen.

Das habe ich jedenfalls erfolglos probiert:
Code: Alles auswählen

<head>
<?php echo $javascript->link("test", false); ?>
</head>
<h2>Jobs</h2>
<table>
...
</table>
 
getit
 
Beiträge: 105
Registriert: Mo 22. Dez 2008, 13:06
CakePHP-Version: 1.2.1.8004
OS: Vista

Re: Fehler beim Aufruf des JavaScript-Helpers

Beitragvon Mathias » Mo 22. Dez 2008, 23:45

Den head tag gibts ja nur einmal. Wenn du die default.ctp benutzt, dann da, ja.

Aber ich hab gerade nochmal in der api nachgelesen. Solltest du inline auf false (wie es ja bei dir ist) gesetzt haben, dann müsste der javascript tag so oder so im head erscheinen. Ich habs nicht ausprobiert.

Hast du denn den Javascript Helper "aktiviert"?

Mach doch mal eine Kopie vom app_controller. Originale app_controller.php findest du in /cake/libs/controller/. Die kopierte app_controller.php packst du in dein /app/-Verzeichnis.

Dann fügst du den Javascript Helper hinzu.
Code: Alles auswählen
var $helpers = array('Javascript');
cheers
Benutzeravatar
Mathias
 
Beiträge: 225
Registriert: Mi 4. Jun 2008, 22:30
Wohnort: Berlin
CakePHP-Version: 1.3.x
OS: OS X 10.6.x

Re: Fehler beim Aufruf des JavaScript-Helpers

Beitragvon getit » Di 23. Dez 2008, 11:17

Danke!!!!
Das hat funktioniert.

Hier was ich gemacht habe:
1. im Controller die Zeile eingetragen:
Code: Alles auswählen
var $helpers = array('Javascript');


2. Im View folgende Zeile eingetragen:
Code: Alles auswählen
<?php $javascript->link("test", false); ?>


3. Die Datei 'test.js' (/app/webroot/js/) erstellt. Inhalt:
Code: Alles auswählen
alert("Ich bin ein dynamisch geladenes JavaScript");


[4. Mach doch mal eine Kopie vom app_controller. Originale app_controller.php findest du in /cake/libs/controller/. Die kopierte app_controller.php packst du in dein /app/-Verzeichnis.]


:?:
Eine Frage: Was hat es mit dem 4. Schritt (als optional markiert - funktioniert auch ohne) auf sich?
:?:
getit
 
Beiträge: 105
Registriert: Mo 22. Dez 2008, 13:06
CakePHP-Version: 1.2.1.8004
OS: Vista

Re: Fehler beim Aufruf des JavaScript-Helpers

Beitragvon Mathias » Di 23. Dez 2008, 12:05

Das Eintragen des Helpers-Array in den app_controller, macht dir die eingetragenen Helper "global" verfügbar. Wenn du den JavaScript-Helper sowieso auf allen Seiten deiner Anwendung benötigst, macht es Sinn, ihn einfach einmal global zu deklarieren, anstatt in jedem einzelnen Controller.

Das Kopieren des app_controllers hat einfach den Sinn, dass du nicht den originalen app_controller editierst.
cheers
Benutzeravatar
Mathias
 
Beiträge: 225
Registriert: Mi 4. Jun 2008, 22:30
Wohnort: Berlin
CakePHP-Version: 1.3.x
OS: OS X 10.6.x

Re: Fehler beim Aufruf des JavaScript-Helpers

Beitragvon getit » Di 23. Dez 2008, 13:07

@Mathias:
Achso, dann habe ich das vorhin falsch verstanden.

Ich sollte also in der Kopie des App_Controller die Zeile
Code: Alles auswählen
 var $helpers = ...
eintragen.
Ok. dann isses klar.
Danke.
getit
 
Beiträge: 105
Registriert: Mo 22. Dez 2008, 13:06
CakePHP-Version: 1.2.1.8004
OS: Vista


Zurück zu Helper

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron