Slim Eloquent et Ajax

Par Michel Mve, il y a 7 ans


Bonjour à tous,

Je n'arrive pas à intégrer ces trois modules Slim, Ajax et Eloquent dans mon site.
En effet je suis entrain de faire un site d'une association et j'ai du mal à ajouter Ajax.

Merci pour vour comprehension.

8 réponses

Romuald Macé, il y a 7 ans

Salut, tu donnes pas assez de détails pour qu'on puisse te donner une réponse pertinente. Tu pourrais nous donner un exemple de ce que tu veux faire avec de l'ajax et encore mieux, un bout de code sur lequel s'appuyer pour t'expliquer.

Michel Mve, il y a 7 ans

Salut @Romuald Macé , Merci déjà pour ta réponse.
Mon but est de permettre au internautes de poster les commentaires sans être rediriger.
j'utulise slim et Eloquent, mais j'ai du mal, bref voici le boulot fait.

Mon Formulaire.

<form class="ui form container ten wide mb-15" > <div class="field "> <div class="required field {{ errors.author ? ' error' : '' }}"> {{ form.label('myForm[firstauthor]', "Votre Nom", {"class": "greener"}) }} {{ form.text('author', old.author , {"required":"required","placeholder":"Ex: villasamuel" }) }} {% if errors.author %} <span class="ui header tiny red">le nom ne doit pas être vide</span> {% endif %} </div> </div> <div class="required field {{ errors.comment ? ' error' : '' }}"> {{ form.label('comment', "Votre commentaire", {"class": "greener"}) }} {{ form.textarea('comment', old.comment, { "placeholder":"Ex: Bonjour, je m'appelle Mr V!"}) }} {% if errors.comment %} <span class="ui header tiny red">le comment ne doit pas être vide</span> {% endif %} </div> {{ form.hidden('slug', post.slug, {"placeholder":"Ex: contact@villasamuel.org"}) }} {{ form.hidden('post_id', post.id, {"placeholder":"Ex: contact@villasamuel.org"}) }} {{ form.button('Submit', "Envoyer", {"class": " button ui green ", "type":"submit"}) }} <div class="ui error message"></div> {{ csrf.field | raw }} </form>

Ma route

$app->post('/post/comment', 'PageController:postComment');

Requette Php

public function postComment( $request, $response) { $validation=$this->validator->validate($request,[ 'comment' => v::notEmpty(), 'author' => v::notEmpty()->alpha(), ]); $path = $request->getUri()->withPath('post/'.$request->getParam('slug')); $basePath = $request->getUri()->getBasePath(); //$uri = $request->getUri()->withQuery('')->withPath($path); //$uri = $uri->withBasePath($basePath); // has to be after withPath() call if ($validation->failed()) { return $response->withRedirect((string)$path, 301); } $Comment = Comments::create([ 'author' => $request->getParam('author'), 'comment' => $request->getParam('comment'), 'slug' => $request->getParam('slug'), 'post_id' => $request->getParam('post_id') ]); $this->flash->addMessage('succes', 'Votre commentaire a été envoyé avec succés'); return $response->withRedirect((string)$path, 301); }

Et enfin ma requette Js

$('.ui.form .submit.button') .api({ url: '/post/comment', method: 'POST', serializeForm: true, beforeSend: function(settings) {}, onSuccess: function(data) { if (data.message == "success") { window.location.href = "/post/comment"; } } });

Nb: J'utilise le framework Semantic UI

Lartak, il y a 7 ans

Bonsoir.
Tu définies comme dernier sélecteur pour ton ajax, un élément qui aurait comme classe submit et button, sauf que dans ton formulaire tu n'as aucun élément qui ait ces deux classes.

Mon but est de permettre au internautes de poster les commentaires sans être rediriger.

Tu dis que tu ne veux pas que l'utilisateur soit redirigé, sauf que lors d'un retour correct de ton appel ajax tu fais une redirection au niveau javascript : window.location.href = "/post/comment";.

Michel Mve, il y a 7 ans

Désolé je commence à peine avec ajax si vous pouvez m'aider

Lartak, il y a 7 ans

Dis au moins ce que tu n'as pas compris, et si c'est en rapport avec les selecteurs, ce n'est pas spécifique à Ajax, mais avec le javascript et le CSS.

Michel Mve, il y a 7 ans

Ce que je ne comprend pas c'est Ajax. Comment recupper avec Eloquent.
Sachant que j'ai un Model Comment.

Lartak, il y a 7 ans

Si tu n'envoies pas les données du formulaire, tu ne risques pas de pouvoir les récupérer du coté PHP.

Michel Mve, il y a 7 ans

J'envoie déjà, mais comment les récupérer et les traiter. C'est là où je ne comprends pas