Relation MVC simple formulaire

Support et assistance pour développer des extensions ou pour modifier Joomla! 1.6, 1.7 et 2.5

Moderators: Aidan38, sarki

Forum rules
Règles du forum
Locked
Carlz
Joomla! Fledgling
Joomla! Fledgling
Posts: 2
Joined: Thu Oct 25, 2012 12:21 pm

Relation MVC simple formulaire

Post by Carlz » Thu Oct 25, 2012 1:10 pm

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)

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 a 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 a 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 ;)

Carlz
Joomla! Fledgling
Joomla! Fledgling
Posts: 2
Joined: Thu Oct 25, 2012 12:21 pm

Re: Relation MVC simple formulaire

Post by Carlz » Thu Oct 25, 2012 2:11 pm

J'ai retravaillé le code, du coup ca marche mais voila est ce que j'utilise correctement le principe de MVC ?

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é


Locked

Return to “2.5 - Développement”