Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. ###raw>post.musername###
    Membre confirmé
    Salut,

    Je rencontre un problème avec le plugin de validation de champs.

    J'ai dans ma vue le champ suivant :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    <tr><th>Identifiant Véhicule</th><td><?php echo $oForm->getInputText('numBus',array('class'=>'form-control','value'=>"1234",'maxlength'=>"4")) ?></td></tr>


    Que je vérifie lors de la validation avec la règle suivante :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    $oPluginValid->matchExpression('numBus','/[0-9]{2,4}/','Ce champ n\'est pas au bon format');


    pourtant j'obtient toujours "Ce champ n'est pas au bon format".

    J'ai donc modifié la fonction matchExpression du plugi_check afin qu'elle me montre ce qu'elle reçoit :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    	public function matchExpression($uValueA,$sExpression,$sErrorMsg='KO matchExpression'){
    		print_r($_POST);
                    echo 'expression : '. $sExpression;
                    echo 'Value : ' . $uValueA;
                    if(preg_match($sExpression,$uValueA)){
     
    			return true;
    		}
                    die();
    		$this->sErrorMsg=$sErrorMsg;
    		return false;
    	}


    pour le résultat suivant :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    Array ( [nameFile] => fzefzef [numBus] => 4568 [token] => 1577440276####de1270b09ad5df2363faf9f996d3436e42c8ac46 ) expression : /[0-9]{2,4}/Value :


    Autre truc sans incidence la valeur value de getInputText n'est pas retranscrite dans le code HTML de la vue...

    Une idée sur l'origine du problème ?
      0  0

  2. #2
    Rédacteur

    Bonjour,
    Je viens d'essayer avec les 2 templates : normal et SC et je n'ai pas trouvé de soucis

    voici les deux projets en piece jointes

    sur le projet SC le check est fait dans la partie business, et dans le normal dans la classe model

    je me demande dans votre cas, si ce n'est pas que l'objet n'est pas chargé avant la vérfication ce qui expliquerait la valeur vide pour le champ..
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  3. #3
    Membre confirmé
    Salut,

    J'ai trouvé mon erreur, j'effectuais un test de cohérence de champs avant l'étape du save().

    C'est corrigé et cela fonctionne.

    J'ai toutefois besoin de conseils toujours dans les checks, car mon formulaire comprends :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    <input type="file" name="fileRP" accept=".db">


    Au début j'avais un check construit comme cela :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    $oPluginValid->isNotEmpty('fileRP','Ce champ ne doit pas &ecirc;tre vide');


    Bien entendu fileRP était toujours vide car jamais transmis dans le $_POST, j'ai donc modifié pour devenir :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    $oPluginValid->isNotEmpty('pathFile','Ce champ ne doit pas &ecirc;tre vide');


    et cela fonctionne. Seul bémol si parcourir n'a pas de fichier je n'ai pas le message associé au champ fileRP.

    Une idée ?
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !


    Albert Einstein

  4. #4
    Rédacteur

    J'ai essayé la chose suivante:

    dans la boucle d'upload (que vous avez si vous avez générér via le mkf

    il y a un check isValid sur le plugin_upload, j'ai ajouté sur le else une creation du plugin de check + un check isNotEmpty sur le champ (name du input type file) pour forcer a retourner l'erreur associé au chmap parcourir

    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    		$tColumnUpload=array('path');
    		if($tColumnUpload){
    			foreach($tColumnUpload as $sColumnUpload){
    				$oPluginUpload=new plugin_upload($sColumnUpload);
    				if($oPluginUpload->isValid()){
    					$sNewFileName=_root::getConfigVar('path.upload').$sColumnUpload.'_'.date('Ymdhis');
     
    					$oPluginUpload->saveAs($sNewFileName);
    					$oImages->$sColumnUpload=$oPluginUpload->getPath();
    				}else{
    					$oPluginValid=new plugin_valid(array($sColumnUpload=>''));
     
    					$oPluginValid->isNotEmpty($sColumnUpload,'Le champ ne doit pas etre vide');
    					return $oPluginValid->getListError();
    				}
    			}
    		}


    mon formulaire pour info:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    <?php 
    $oForm=new plugin_form($this->oImages);
    $oForm->setMessage($this->tMessage);
    ?>
    <form action="" method="POST"  enctype="multipart/form-data">
     
    <table class="tb_new">
     
    	<tr>
    		<th>path</th>
    		<td><?php echo $oForm->getInputUpload('path') ?></td>
    	</tr>
     
     
    	<tr>
    		<th></th>
    		<td>
    			<p>
    				<input type="submit" value="Ajouter" /> <a href="<?php echo $this->getLink('images::list')?>">Annuler</a>
    			</p>
    		</td>
    	</tr>
    </table>
     
    <?php echo $oForm->getToken('token',$this->token)?>
     
    </form>
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

  5. #5
    Membre confirmé
    Merci ! cela fonctionne.

    J'avais palier au problème de cette façon :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
      if(_root::getRequest()->isPost() and isset($_FILES['fileRP'])){


    Ce qui n’empêchait de trouver une autre approche.
    La théorie, c'est quand on sait tout et que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !


    Albert Einstein