Sauvegarder les données en utilisant AJAX et CakePHP
J'ai passé aujourd'hui la recherche de la façon d'enregistrer les données à l'aide d'une requête ajax dans cakephp, et ont obtenu maintenant où, la documentation sur le site web cakephp semble un peu défaut pour ce sujet en particulier.
J'ai plusieurs listes triables et j'ai besoin de sauvegarder la position de chaque élément de la liste quand on est triée. J'ai une requête ajax défini comme suit, qui est déclenchée lorsqu'un élément est déplacé:
$.ajax({
url: "/orders/save_column_order",
type:"POST",
data:"data="+data
});
et référencé dans la fonction du contrôleur est:
function save_column_order(){
if($this->RequestHandler->isAjax()){
SAVE STUFF...
}
}
J'ai les aides etc. mise en place:
var $helpers = array('Html','Form','Js');
var $components = array('Session','Email','RequestHandler');
Et sa ne fonctionne pas...
Donc mes questions sont:
1) qu'est-Ce que l'url actuelle de l'envoi d'une requête ajax à une action d'un contrôleur? Est-ce simplement /controller/action?
2) Que dois-je faire pour le contrôleur pour accéder à l'ajax de données?
BONUS:
3) Est-il un moyen d'inclure une coutume fichier php dans le framework CakePHP qui référence les paramètres de base de données afin que je puisse mettre à jour manuellement ma base de données mysql?
source d'informationauteur Alex
Vous devez vous connecter pour publier un commentaire.
Vous étiez très proche.
1.) L'URL est tout simplement /controller/action. Les données sont transmises dans $this->data et est magiquement disponible dans l'action.
**Depuis que vous avez la liste des 'Js' dans vos aides à la place de 'Javascript', je suis en supposant que vous êtes à l'aide de Gâteau 1.3.x et jQuery, parce que jQuery est la valeur par défaut avec un Gâteau 1.3 et Js remplacé Javascript /Ajax.
-- Fix vos aides:
-- Fix votre jQuery:
2.) Utilisation Gâteau est magique:
-- Puisque vous êtes en train de faire de l'ajax, vous ne voulez probablement PAS à Cake affichage par défaut-rendu de comportement (juste une supposition.) Si vous voulez rendre un quelconque point de vue, c'est probablement juste une capture de balisage pour l'ajax de rappel, alors vous voudrez probablement de la placer dans un élément plutôt que d'une véritable vue:
-- Sinon, il suffit de supprimer le rendu:
-- Si votre sauvegarde ne fonctionne pas, assurez-vous que la structure de $this->data est un Gâteau sauver l'environnement. Si vous avez besoin d'afficher le contenu de $this->données, intégrées à Cake de débogage (à partir de n'importe où dans votre app) va vous aider à obtenir redressé:
3.) Attendez, quoi?
Pas sûr de comprendre ce que vous demandez correctement, donc si cela ne couvre pas votre question, veuillez préciser ce que vous essayez de faire?
Si tu veux, va Gâteau de vous permettre de mettre à jour manuellement des enregistrements dans une table/s, oui? Bien que je ne suis pas sûr pourquoi vous désirez. Le gâteau est très puissant et intégré dans la moraine d'oak ridges est la moitié de la point de le cadre, et de ses très complète de la magie est l'autre moitié.
Vous pouvez griffonner hors tout droit SQL avec le Modèle::sql() la méthode, même si cela est déconseillé, il n'est pas très POO ou réutilisables.
Lorsque vous définissez des associations dans votre modèle, vous pouvez définir la clé étrangère de faux et de spécifier les conditions qui fonctionnent comme un select imbriqué dans le Gâteau de l'auto de jointures.
Si vous avez besoin de la force de rejoindre/s, Gâteau de $options['rejoint'] vous donner complètement un contrôle granulaire; vous pouvez désigner n'importe quel type de JOINTURE si la GAUCHE par défaut n'est pas assez bon pour ce que vous devez faire.
Vous pouvez faire et défaire les liaisons de modèle à la volée avec $this->Model->bind() /unbind(). Vous pouvez spécifier le niveau de récursivité, appliquer le behavior Containable comportement, spécifier les champs à sélectionner et à toutes les conditions.
Si vous avez besoin d'une sous-requête et le Gâteau ne peuvent tout simplement pas l'obtenir, $dbo->buildStatement() permettra de construire votre instruction SQL et $dbo->expression() feu:
-- Si vous voulez dire - va Gâteau de vous permettre d'échanger les configurations de base de données à la volée, oui. Toutefois, cela peut être assez hardcore, surtout quand le Gâteau magique est une partie de la situation.
Vous pouvez ajouter plusieurs db configs /app/config/database.php -
-- Commutation entre eux dans votre contrôleur /modèle est là que les choses deviennent un peu intense, selon la complexité de votre situation:
-- Si c'est ce que tu voulais dire, je peux coller un morceau de code que j'ai écrit il y a quelques semaines nécessitant je enregistrer un ajax formulaire de soumission (à 2 étapes de remplir le formulaire) à 3 tables de 2 bases de données (une portion de mon Gâteau d'application, l'autre pour un héritage CodeIgniter application) montrant toutes ces pirouettes dans l'action avec certains de la bonne vieille Gâteau magique à la jointure par le biais de sauvegarde/mise à jour des raccourcis. (J'ai également eu à générer sélective des e-mails et, enfin, de déclencher un RESTE de demande de passer l'id/e de la nouvelle enregistrements insérés à l'application ec déclencheur de la transformation. Ouf!)
De toute façon, HTH. 🙂
$this->data
comme d'habitude