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.
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.
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
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";
.
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.
Ce que je ne comprend pas c'est Ajax. Comment recupper avec Eloquent.
Sachant que j'ai un Model Comment.
Si tu n'envoies pas les données du formulaire, tu ne risques pas de pouvoir les récupérer du coté PHP.
J'envoie déjà, mais comment les récupérer et les traiter. C'est là où je ne comprends pas