Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] Ajout d'un controle

Posted by djanke on 02/19/2008 10:39

Dans un formulaire crud j'ai deux dates start_date end_date, je souhaiterais ajouter un controle end_date >= start_date. En surchargeant la méthode _checkDatas :

Dans mon controleur j'ajoute :

 function _checkDatas($form, $calltype)
 {
	$start_date = $this->param('start_date');
	$end_date = $this->param('end_date');
	if ($start_date > $end_date) {       
        
                return false;
        }
  return true;
 }

Ca fonctionne bien maintenant je voudrais assigner une variable $erreur au template si je rajoute

 $tpl->assign($erreur,'Date de fin < Date début');

J'ai l'erreur Call to a member function assign() on a non-object in .. Comment assigner une valeur à $tpl ???

  [Opened] Re: Ajout d'un controle

Reply #1 Posted by laurentj on 02/19/2008 11:41

Salut,

Pour assigner une erreur à un contrôle précis, il faut faire :

  $form->setErrorOn('le_nom_du_champs', 'ceci est une erreur');

Donc là par exemple, tu fera

  $form->setErrorOn('end_date', 'Date de fin < Date début');

Et c'est tout. L'affichage se fera automatiquement.

  [Opened] Re: Ajout d'un controle

Reply #2 Posted by Dunbo on 08/28/2012 17:17

Bonjour,

Je réactive ce billet car j'ai un problème qui me semble similaire. En effet j'ai un contrôleur avec deux fonctions index() et getTenantCheck(). La première affiche le formulaire et la seconde vérifie et réagit en fonction.

Je vérifie ma date de la façon suivante :

$bdate->setFromString($form->getData("bdate"),jDateTime::LANG_DFORMAT);
$edate->setFromString($form->getData("edate"),jDateTime::LANG_DFORMAT);
if($edate->compareTo($bdate)==-1){
  $form->setErrorOn('edate', 'Ending date must be superior to begining date');
  $rep = $this->getResponse('redirect');
  $rep->action='accounting~tenantCheck:index';
  return $rep;
}

Pas de soucis mais quand je raffiche le formulaire en appelant index() pas de trace de l'erreur et le formulaire n'a pas retenu les valeurs.

Merci d'avance.

  [Opened] Re: Ajout d'un controle

Reply #3 Posted by laurentj on 08/29/2012 13:25

Bonjour,

es-tu sûr que tu récupère le bon formulaire (avec le même identifiant, qu'il soit null ou autre valeur) ?

  [Opened] Ajout d'un controle

Reply #4 Posted by Dunbo on 08/29/2012 15:39

Bonjour Laurent,

Certain voici le code de ma fonction index()

	function index(){ 
		global $gJConfig;
		$rep = $this->getResponse('html');
		$rep->addCSSLink($gJConfig->urlengine['basePath'].'css/jquery.autocomplete.css');
		$rep->addCSSLink($gJConfig->urlengine['basePath'].'css/jquery-ui.css');
		$form = jForms::create('accounting~tenantCheckSelection');
		$sql =" Select distinct exercice from acc_booked order by exercice desc";
		$cnx = jDb::getConnection();
		$rs = $cnx->query($sql);
		$exercices=array();
		foreach($rs as $r){
			$exercices[$r->exercice]=$r->exercice;
		}
	  	$tpl = new jTpl();  
		$form->getControl('exercices')->datasource->data = $exercices;
		$tpl->assign('frm', $form);
		$rep->body->assign('MAIN', $tpl->fetch('tenantCheckSelection'));
		return $rep;
	}

et le code de la fonction qui redirige est celui mentionné plus haut

  [Opened] Ajout d'un controle

Reply #5 Posted by foxmask on 09/01/2012 17:59

C'est normal que les valeurs saisies ne soient pas retenues.

Quand on est sur la methode index() on fait un jForms::create() donc qui debute une session jforms de zéro.

Pour que la redirection fonctionne il faudrait faire un jforms::get() qui recupere l'instance form

voir la doc en détail


@GitHub - Forum HaveFnuBB! powered by Jelix - Le Booster Jelix !

  [Opened] [[résolu]]Ajout d'un controle

Reply #6 Posted by Dunbo on 09/05/2012 16:52

Salut Foxmask,

Merci pour ta réponse en effet cela fait partie des problème de lecture sélective. Merci encore.

 
Page
  1. Ajout d'un controle