Bonjour à tous,
Je pensais avoir bien compris le fonctionnement des routes avec Silex et de l'écriture simplifiée par twig, mais là je bloque.
En résumé :
J'ai sur mon site plusieurs formulaires pour enregistrer les infos sur un auteur, un artiste ... dans ma base de données, à l'adresse /ajout/...
J'aimerais qu'à la validation du formulaire :
1) les données soient enregistrées,
2) la page avec le bon formulaire soit rechargée.
Mon code :
Pour l'affichage du formulaire et l'enregistrement des données :
Les pages qui gèrent l'affichage des formulaires :
Le fichier administration_record.twig :
Le fichier administration_record-artist.twig :
Le controller :
Le problème c'est que quand je valide le formulaire je ne suis apparemment pas redirigé dans la bonne fonction (si j'en crois les var_dump que j'utilise pour vérifier les données).
Pour réafficher le bon formulaire (administration_record-artist.twig par exemple), je dois remplacer mon return par un appel de la fonction record (pour ré-entrer dans le switch) ou je dois envoyer la variable $type dans le formulaire et faire :
pour rappeler le bon type de formulaire ?
Modifié par AlexP (25 Jul 2017 - 16:02)
Je pensais avoir bien compris le fonctionnement des routes avec Silex et de l'écriture simplifiée par twig, mais là je bloque.
En résumé :
J'ai sur mon site plusieurs formulaires pour enregistrer les infos sur un auteur, un artiste ... dans ma base de données, à l'adresse /ajout/...
J'aimerais qu'à la validation du formulaire :
1) les données soient enregistrées,
2) la page avec le bon formulaire soit rechargée.
Mon code :
Pour l'affichage du formulaire et l'enregistrement des données :
$app->get('/administration/ajout/{type}', 'app\controllers\AdministrationController::record')->bind('administration_record');
$app->post('/administration/ajout/{type}', 'app\controllers\AdministrationController::record')->bind('administration_record_save');
Les pages qui gèrent l'affichage des formulaires :
Le fichier administration_record.twig :
{% extends 'layout.twig' %}
{% block title %}Administration{% endblock %}
{% block content %}
<h2>Page d'ajout de fiche :</h2>
{% endblock %}
Le fichier administration_record-artist.twig :
{% extends 'administration_record.twig' %}
{% block title %}Ajout d'artiste{% endblock %}
{% block content %}
{{ parent() }}
<form action="post">
<!-- le contenu de mon formulaire -->
<button type="submit">Valider</button>
<button type="reset">Annuler</button>
</form>
{% endblock %}
Le controller :
public function record (Application $app, $type){
switch ($type) {
case "artiste":
return $app['twig']->render('administration_record-artist.twig');
break;
}
return $app['twig']->render('administration_record.twig');
}
public function recordOnDatabase (Application $app, Request $request) {
// Enregistrement dans la base de données
return $app['twig']->render('administration_record.twig');
}
Le problème c'est que quand je valide le formulaire je ne suis apparemment pas redirigé dans la bonne fonction (si j'en crois les var_dump que j'utilise pour vérifier les données).
Pour réafficher le bon formulaire (administration_record-artist.twig par exemple), je dois remplacer mon return par un appel de la fonction record (pour ré-entrer dans le switch) ou je dois envoyer la variable $type dans le formulaire et faire :
return $app['twig']->render('administration_record.twig', [
'type' => $type
]);
pour rappeler le bon type de formulaire ?
Modifié par AlexP (25 Jul 2017 - 16:02)