Salut à tous, j'aimerais savoir si c'est possible comment valider les un formulaire directement dans la vue de creation? parceque mon soucis est de pouvoir valider les données saisit directement lors de la soumission du formulaire.

4 réponses


Je ne comprend pas ta question...
Tu aimerais "valider" tes données dans ta vue signifie traiter la méthode POST dans ton fichier .ctp ?
Ou est ce que "directement" veut dire sans rafraichir la page ?

romses
Auteur

traiter le post directement dans le fichier de vew (.ctp) qui affiche le formulaire

C'est contraire à la logique MVC imposée par CakePHP.
Tu as plutôt intérêt à utiliser cette logique car elle va te permettre d'aller beaucoup plus vite et de mieux ordonner tes fichiers et donc de pouvoir y voir plus clair !

Que veux tu faire exactement, peux tu me donner un exemple de ton code ?

romses
Auteur

voila j'ai une table utilisateurs qui permet d'enregistrer mes utilisateurs lorsqu'un utilisateur s'enregistre, il est rediriger vers la zone membre gérer par le controleur membres. dans le controleur membre je donne la possiblité de modifier le compte(nom,prenom,sexe,telephone). je veus que lorsque l'utilisateurs modifie une information que je valide d'abord avant de faire un update voila ma vew :

<table class="table table-hover">
            <tr><td><strong>Nom</strong></td><td><?php echo h($user['Utilisateurs']['nom_utilisateur']); ?></td><td><?php echo $this->Html->link('','#form-nom', array('class'=>'glyphicon glyphicon-edit','data-toggle' =>'modal','data-backdrop' =>'false','title' => 'Modifier')); ?></td></tr>
            <tr><td><strong>Prénom</strong></td><td><?php echo h($user['Utilisateurs']['prenom_utilisateur']); ?></td><td>  <?php echo $this->Html->link('','#form-prenom', array('class'=>'glyphicon glyphicon-edit','data-toggle' =>'modal','data-backdrop' =>'false','title' => 'Modifier')); ?></td>
            </tr>
            <tr><td><strong>Numéro de téléphone</strong></td><td><?php echo h($user['Utilisateurs']['tel_utilisateur']); ?></td><td><?php echo $this->Html->link('','#form-telephone', array('class'=>'glyphicon glyphicon-edit','data-toggle' =>'modal','data-backdrop' =>'false','title' => 'Modifier')); ?></td>
            </tr>
            <tr><td><strong>Sexe</strong></td><td><?php echo h($user['Utilisateurs']['sexe_utilisateur']); ?></td><td><?php echo $this->Html->link('','#form-sexe', array('class'=>'glyphicon glyphicon-edit','data-toggle' =>'modal','data-backdrop' =>'false','title' => 'Modifier')); ?></td>
            </tr>
            <tr><td><strong>Fonction</strong></td><td><?php echo h($user['Utilisateurs']['fonction']); ?></td><td><?php echo $this->Html->link('','#form-fonction', array('class'=>'glyphicon glyphicon-edit','data-toggle' =>'modal','data-backdrop' =>'false','title' => 'Modifier')); ?></td>
            </tr>
            <tr><td><strong>Addresse</strong></td><td><?php echo h($user['Utilisateurs']['addresse']); ?></td><td>

            <?php echo $this->Html->link('','#form-addresse', array('class'=>'glyphicon glyphicon-edit','data-toggle' =>'modal','data-backdrop' =>'false','title' => 'Modifier')); ?>

            </td>
            </tr>
               </table>

voici le formulaire qui est appelé pour modifier les informations

    <div class="modal-body">

                        <?php
                        $add = $user['Utilisateurs']['nom_utilisateur'];

                            echo $this->Form->create('Utilisateur', array('url' =>array('controller' => 'Membres','action'=>'Updatecompte'),'class'=>'form-inline')); ?>

                            <?php
                            echo $this->Form->input('Utilisateur.valuefield', array('label'=>' Nom &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;','class'=>'form-control','value'=>$add));
                            ?>
                            <?php
                            echo $this->Form->input('Utilisateur.champ', array('type'=>'hidden','value'=>'nom_utilisateur'));
                            ?>

                            <br>
                            <?php
                            echo $this->Form->button('Modifier', array('type'=>'submit','class'=>'btn btn-primary btn-modifier'));
                            echo $this->Form->end();
                        ?>

                    </div>

dans le controleur membre je fais ceci

<?php

/**
*  
*/
App::uses('Comptes','Controller');
class MembresController extends AppController
{
    public $theme = 'Membres';
    public $uses = array('Compte','Utilisateur');
    public function index()
    {
        $this->layout = 'defaults';
        //$this->set('title_for_layout','Vous êtes connecté comme membre');
    }

    public function Gestionprofil()
    {
        $this->layout = 'defaults';
        //debug($this->Session->read());
        //debug($this->Session->read('Auth.User.id'));
        //debug(AuthComponent::Compte());

    } 
    public function editcompte()
    {
        $this->layout = 'defaults';
        $User_id = $this->Auth->user('id');
        if(!$User_id)
        {
        return $this->redirect(array('controller' =>'Comptes','action' =>'login'));
        die();
        }
        $this->Compte->bindModel(array('belongsTo' =>array('Utilisateurs' => array('classname' => 'Compte'))));
        $this->Compte->id = $User_id;
        $this->request->data = $this->Compte->read();
        $this->set('user',$this->request->data);
        //debug($this->request->data['Compte']['motdepass_compte']);

    }
    public function  Updatecompte()
    {
        $this->layout = 'defaults';
        $user_id = $this->Auth->user('id');
        if(!$user_id)
        {
             return $this->redirect('/');
            die();
        }
        if(!$this->request->is('put') && !empty($this->request->data))
        {

            $fieldsave = $this->request->data['Utilisateur']['champ'];

            /*if($this->request->data['Utilisateur']['champ'] == 'tel_utilisateur')
            {
                $this->Utilisateur->set($this->request->data['Utilisateur']['tel_utilisateur']);

                if($this->Utilisateur->validates(array('fieldList' =>array('tel_utilisateur'))))
                {
                    $errors = $this->Utilisateur->validationErrors;
                    debug($this->request->data['Utilisateur']['tel_utilisateur']);

                $this->request->data['Utilisateur']['valuefield'] = $this->request->data['Utilisateur']['tel_utilisateur']; 
                }
                else
                {
                     $this->Session->setFlash('Les informations sont incorrectes','default', array('class'=>'alert alert-error'));
                     debug($errors);
                }
            }
            */

            debug($this->request->data['Utilisateur']['valuefield']);
            $this->Utilisateur->id = $user_id;
            if($this->Utilisateur->saveField($fieldsave,$this->request->data['Utilisateur']['valuefield'],true))
            {
                //debug($this->Utilisateur->read());

                         $this->Session->setFlash('Modification effectuer avec succès','default', array('class'=>'alert alert-success'));
                         return $this->redirect(array('action' => 'editcompte'));
            }
            else
            {

                         $this->Session->setFlash('erreur d\'Enregistrement','default', array('class'=>'alert alert-error'));
                         debug($this->Utilisateur->read());
            }
        }
    }

}

?>

j'aimerai savoir comment valider les informations avec mon model utulisateur