2012-04-04 3 views
0

Also ich in meinem bearbeiten Ansicht bin ... mal sagt, es Beiträge/edit/1CakePHP: Senden aktuelle Modell-ID an einen anderen Controller via AJAX

ist

Diese Seite einige Javascript lädt die einen $ .get Anruf tätigt, dass zieht Daten von einer anderen Aktion auf demselben Controller (posts/foo).

Wie kann ich einfach die ID des aktuellen Modells an AJAX und an den anderen Controller senden?

In diesem Fall sind beide Aktionen in der gleichen Steuerung, aber ich bin mir nicht sicher, dass das in diesem Fall hilft.

Antwort

0

wenn Sie Jquery verwenden, können Sie so etwas wie diese

$(document).ready(function(){ 
    //ajax call here 
}); 

Die Sache ist haben, dass, wenn Ihr Dokument, das Sie gerade diese ID sendet an den anderen Controller geladen ist.

Ich hoffe, das hilft

+0

Ich habe alle meine Ajax schwimmen schwimmend, das Problem ist herauszufinden, wie sauber Daten aus dem aktuellen Modell in meine jQuery senden. Ich würde lieber nicht eine Reihe von "Skript" -Tags zu meiner Ansicht hinzufügen oder so etwas. –

+0

Sie können das Modell nicht wirklich mit jquery "sprechen" lassen, da die Serverseite (Modell) nicht direkt mit der Clientseite (View) kommunizieren kann, so dass Sie dafür eine Art von Script-Tag in Ihrer Ansicht haben müssen arbeiten. Wenn Sie sich über die Validierung wundern, $ this-> Htmk-> scriptBlock ('Skript hier', Array ('Inline' => falsch)); Dies wird den Skriptblock in Ihre Kopfzeile ausgeben, so dass –

+0

Sinn macht. Das mache ich in meinem JS. Es spuckt die ID basierend auf der Route aus, da Cake standardmäßig IDs im Routing verwendet. var Pfadname = window.location.Pfadname; Pfadname = Pfadname.split ("/"); var pID = Pfadname.pop(); –

0

Wenn Sie nur die Post-ID von Ihrer Bearbeitungsansicht erhalten müssen, ist dies die Variable, die Sie brauchen:

$this->Form->fields['Post.id'] 

Wenn sie nicht „Post“, ersetzen Sie es einfach mit dem Modellnamen, den Sie verwenden, und versuchen, die ID dafür zu erhalten.

AKTUALISIERT: Basierend auf der Klarstellung: Sie haben Recht; Für das, was Sie zu tun versuchen, müssen Sie den Link oder nur die eindeutige ID in einem Skript-Tag generieren und diese Variable dann irgendwie in Ihrem eingeschlossenen Skript verwenden. Werfen Sie einen Blick auf how I did it for a CakePHP plugin. Eine kurze Zusammenfassung:

  1. Fügen Sie die JS-Dateien, wie Sie normalerweise
  2. eine Variable in einem Skript-Tag in der Steuerung
  3. diese Variable in den mitgelieferten JS-Dateien verwenden erstellen täten

Etwas wie folgt:

<script type="text/javascript"> 
id = '<?php echo $this->Form->fields['Post.id'] ?>; 
</script> 

und dann diese ID-Variable in Ihrer eingeschlossenen Javascript-Datei verwenden.

+0

Vielleicht sollte ich die erste Frage zu klären, um klarer zu sein.Das Problem ist nicht, das ID-Feld zu bekommen, es ist der beste Weg für das PHP, um meinem JS zu sagen, was es ist. Es scheint, dass meine einzigen wirklichen Optionen darin sind, es in einem