je suis en train de faire une forme simple qui ajoute un nouveau commentaire en utilisant ajax pour un billet de blog (en fait cela fait partie d'un tutoriel CakePHP)problème CakePHP formulaire ajax base
mais le problème est que le bouton soumettre ne rien faire du tout
ici est la partie du code qui génère la forme dans le view.ctp fichier
<?php echo $ajax->form('/comments/add', 'post', array('url' => '/comments/add', 'update' => 'PostsComments', 'indicator' => 'commentSaved'));?>
<fieldset>
<legend><?php __('Add Comment');?></legend>
<?php
echo $form->hidden('Comment.post_id', array('value' => $post['Post']['id']));
echo $form->input('Comment.name');
echo $form->input('Comment.content');
?>
</fieldset>
<?php echo $form->end('Submit');?>
et voici l'action de commentaires Ajouter dans la comments_controller.php
if (!empty($this->data)) {
$this->Comment->create();
if ($this->Comment->save($this->data)) {
$comments = $this->Comment->find('all',array('conditions'=>array('post_id'=>$this->data['Comment']['post_id']),'recursive'=>-1));
$this->set(compact('comments'));
$this->render('add_success','ajax');
} else {
$this->render('add_failure','ajax');
}
}
le problème est que l'action add n'appelle pas de la vue ... quand je considérais le code source html généré j'ai trouvé quelque chose comme ça
<form id="form304217296" onsubmit="event.returnValue = false; return false;" method="post" action="/php-cake/blog/comments/add"><fieldset style="display:none;">
si je supprimé le sur soumettre étiquette manuellement, l'action est appelée, mais le fichier add_success.ctp est généré en tant que nouvelle page et non en tant qu'appel ajax.
alors quel pourrait être le problème?
oui iam utilisant la bibliothèque prototype, mais je l'avais mis en application/Webroot/js pas dans le dossier vue/mise en page aussi je na pas utiliser scriptaculus que je pense ce n'est pas nécessaire pour cette forme simple? droite ? –
Je ne suis pas sûr de scriptaculus (mais je pense que vous n'en avez pas besoin pour tout appel ajax). Ce que je voulais dire par inclure dans votre vue/mise en page: avez-vous un $ javascript-> lien («prototype»); n'importe où dans votre vue ou dans votre mise en page, de sorte que dans le code source il y ait un
Questions connexes