Relation MVC simple formulaire - Joomla! Forum - community, help and support
bonjour,
je suis nouveau dans le développement mvc, et j'avoue que je comprends pas bien comment fonctionne tous ça, notamment ou placer les conditions :
pour m'exercer je souhaite créer un bête formulaire, quand on valide on vérifie si le champ est rempli, s'il est rempli on l'envoi sur une page pour 'formulaire validé' sinon on le renvoie sur la même page avec un message 'erreur dans le formu'. j'arrive à afficher le formulaire et afficher un message 'ok' quand il est rempli mais je bloque au niveau de la vérification, où mettre la condition if ($_post['nom'] != '') dans une méthode du modèle, du le contrôleur ? j'avoue je suis perdu. je vous montre ce que j'ai fait (et qui ne marche pas) :
le controlleur (controller.php)
la function envoi est appelé quand je soumet mon formulaire (<form action="....?task=envoi">
le modèle (models/formulaire.php)
la méthode getform renvoie le formulaire et est censé ajouter un message d'erreur si le champ n'est pas rempli avec jrequest::getvar('erreur', '', 'post'); que j'ai normalement envoyé avec setvar dans le contrôleur, (est ce une bonne méthode pour transmettre des infos du contrôleur au modèle ? ou est ce que ca devrais être le contrôleur) je ne sais pas si marche vu que le contrôleur ne me renvoie jamais sur cette vue après validation du formulaire...
la méthode verif() est appelé depuis le contrôleur (je ne sais pas si on le droit de faire ça : appeler une méthode depuis un contrôleur)
d'ailleurs quand j'appelle cette méthode depuis le contrôleur :
la condition if ($verif) est toujours vérifiée peu importe ce que j'écris dans la méthode verif() du modèle.
la vue du formulaire (views/formulaire/view.html.php)
il y une autre vue 'ok' mais je vous l'épargne je ne pense qu'elle serve à quelque chose dans mon problème.
si vous pouvez m'éclairer sur ces questions.
merci d'avance
je suis nouveau dans le développement mvc, et j'avoue que je comprends pas bien comment fonctionne tous ça, notamment ou placer les conditions :
pour m'exercer je souhaite créer un bête formulaire, quand on valide on vérifie si le champ est rempli, s'il est rempli on l'envoi sur une page pour 'formulaire validé' sinon on le renvoie sur la même page avec un message 'erreur dans le formu'. j'arrive à afficher le formulaire et afficher un message 'ok' quand il est rempli mais je bloque au niveau de la vérification, où mettre la condition if ($_post['nom'] != '') dans une méthode du modèle, du le contrôleur ? j'avoue je suis perdu. je vous montre ce que j'ai fait (et qui ne marche pas) :
le controlleur (controller.php)
code: select all
<?php
defined( '_jexec' ) or die( 'restricted access' );
jimport('joomla.application.component.controller');
class jeuxfbcontroller extends jcontroller
{
function display()
{
jrequest::setvar('view', 'formulaire');
parent::display();
}
function envoi() {
$model = &$this->getmodel('formulaire');
$verif = $model->verif();
if ($verif) {
jrequest::setvar('view', 'ok'); }
else {
jrequest::setvar('erreur', 'true');
jrequest::setvar('view', 'formulaire');
}
parent::display();
}
}la function envoi est appelé quand je soumet mon formulaire (<form action="....?task=envoi">
le modèle (models/formulaire.php)
code: select all
defined( '_jexec' ) or die( 'restricted access' );
jimport( 'joomla.application.component.model' );
class jeuxfbmodelformulaire extends jmodel
{
function getform()
{
$erreur = jrequest::getvar('erreur', '', 'post');
if ($erreur) $form['script'] .= 'erreur dans le formu';
$form['script'] .= '
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<form name="jeuxfb" action="index.php?option=com_jeuxfb&task=envoi" method="post" id="jeuxfb">votre nom <input type="text" name="nom" /><input type="submit" value="go" /></form>';
return $form;
}
function verif()
{
if ($_post['nom'] != '')
return true;
return 'pasok';
}
}la méthode getform renvoie le formulaire et est censé ajouter un message d'erreur si le champ n'est pas rempli avec jrequest::getvar('erreur', '', 'post'); que j'ai normalement envoyé avec setvar dans le contrôleur, (est ce une bonne méthode pour transmettre des infos du contrôleur au modèle ? ou est ce que ca devrais être le contrôleur) je ne sais pas si marche vu que le contrôleur ne me renvoie jamais sur cette vue après validation du formulaire...
la méthode verif() est appelé depuis le contrôleur (je ne sais pas si on le droit de faire ça : appeler une méthode depuis un contrôleur)
d'ailleurs quand j'appelle cette méthode depuis le contrôleur :
code: select all
function envoi() {
$model = &$this->getmodel('formulaire');
$verif = $model->verif();
if ($verif) {
la condition if ($verif) est toujours vérifiée peu importe ce que j'écris dans la méthode verif() du modèle.
la vue du formulaire (views/formulaire/view.html.php)
code: select all
defined( '_jexec' ) or die( 'restricted access' );
jimport( 'joomla.application.component.view');
class jeuxfbviewok extends jview
{
function display($tpl = null)
{
$texte = 'salut les gens';
$this->assignref('texte', $texte);
parent::display($tpl);
}
}
il y une autre vue 'ok' mais je vous l'épargne je ne pense qu'elle serve à quelque chose dans mon problème.
si vous pouvez m'éclairer sur ces questions.
merci d'avance
j'ai retravaillé le code, du coup ca marche mais voila est ce que j'utilise correctement le principe de mvc ?
controleur
formulaire.php (modèle)
et le reste inchangé
controleur
code: select all
<?php
defined( '_jexec' ) or die( 'restricted access' );
jimport('joomla.application.component.controller');
class jeuxfbcontroller extends jcontroller
{
function display()
{
jrequest::setvar('view', 'formulaire');
parent::display();
}
function envoi() {
if ($_post['nom'] == '') {
jrequest::setvar('view', 'formulaire');
jrequest::setvar('envoi', 'oui', 'post');
parent::display(); }
else {
jrequest::setvar('view', 'ok');
parent::display();
}
}
}formulaire.php (modèle)
code: select all
<?php
defined( '_jexec' ) or die( 'restricted access' );
jimport( 'joomla.application.component.model' );
class jeuxfbmodelformulaire extends jmodel
{
function getform()
{
if ($_post['envoi'] == 'oui') { $form['script'] .= 'erreur formu'; }
$form['script'] .= '
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<form name="jeuxfb" action="index.php?option=com_jeuxfb&task=envoi" method="post" id="jeuxfb">votre nom <input type="text" name="nom" /><input type="submit" value="go" /></form>';
return $form;
} }et le reste inchangé
Comments
Post a Comment