Bonjour à tous

En suivant la doc officiel de Cakephp, je viens de créer mon premier plugin du moins la vue, mais je n'arrive pas à valider les données envoyé depuis le formulaire.

/app/plugin/popup/models/user.php
<?php
class User extends PopupAppModel {
  var $useTable = false;
  var $validate = array(

      'nom' => array(
          'rule' => 'notEmpty'
          ,'required' => true
          ,'allowEmpty' => false
          ,'message' => 'Vous devez saisir votre nom'
      )
      ,'prenom' => array(
          'rule' => 'notEmpty'
          ,'required' => true
          ,'allowEmpty' => false
          ,'message' => 'Vous devez saisir votre prénom'
      )
       ,'telephone' => array(
          'format' => array(
              'rule' => '#^[0-9]{10}$#'
              ,'message' => 'Votre code postal doit être composé de 10 chiffres uniquement, sans espace'
          )
          ,'notEmpty' => array(
              'rule' => 'notEmpty'
              ,'required' => true
              ,'allowEmpty' => false
              ,'message' => 'Vous devez saisir votre téléphone'
          )
      )
  );
}

/app/plugin/popup/controllers/popup_controller.php
<?php
class PopupController extends PopupAppController {
    var $uses = array('Agence');

    public function index($id){
        $agence = $this->Agence->read(null,$id);
        if(!empty($this->data)){
            $this->loadModel('User');
            $this->User->set( $this->data );
            if ($this->User->validates()) {
                debug('valide');
            }else{
                debug('invalide');
            }
        }
        $this->set(compact('agence'));
        $this->layout = false;
    }
}

/app/plugin/popup/views/index.ctp
<div class="popup">
    <div class="corbel-blod uppercase bold style-normal font-14 center popup-titre bleu-fonce-bg white-txt border-radius-5">je souhaite être rappelé </div>
    <div style="width: 428px; margin: 0 auto;">
        <?php echo $this->Form->create('Popup', array('url' => array('plugin' => 'popup','controller' => 'popup', 'action' => 'index',$agence'Agence']'id']))); ?>

        <?php echo $this->Form->input('civilite', array('label' => 'Civilité','options' => array('madame'=>'Madame','mademoiselle'=>'Mademoiselle','monsieur'=>'Monsieur'))); ?>
        <?php echo $this->Form->input('nom',array('label'=>'Nom <span class="orange-txt">*</span>')); ?>
        <?php echo $this->Form->input('prenom',array('label'=>'Prénom <span class="orange-txt">*</span>')); ?>
        <?php echo $this->Form->input('telephone', array('label' => 'Téléphone <span class="orange-txt">*</span>')); ?> 
        <?php $horaire = array(
                            '08h - 10h'=>'Entre 08h et 10h',
                            '10h - 12h'=>'Entre 10h et 12h',
                            '12h - 14h'=>'Entre 12h et 14h',
                            '14h - 16h'=>'Entre 14h et 16h',
                            '16h - 18h'=>'Entre 16h et 18h'
                        ); ?>
        <?php echo $this->Form->input('horaire', array('label' => 'Tranche horaire','options' => $horaire)); ?>

    <?php echo $this->Form->submit('Envoyer'); ?>
    <?php echo $this->Form->end()?>
        </div>
</div>

L'appel depuis cakephp fonctionne, le formulaire s'affiche bien mais quand je clique sur valider même si les champs obligatoires sont vides, je ne reviens pas sur ma fenêtre avec les messages d'erreurs, je n'arrive pas à faire valider les données de mon plugin avec le modèle contenu dans ce même plugin.

J'ai aussi crée correctement les fichier popup_app_controller.php dans /popup et popup_app_model.php dans /popup

Si vous avez des conseils, je suis preneur.

Merci

1 réponse


La class de ton controller doit étendre de AppController et non de PopupAppController

Ensuite pour les expressions régulières je suis pas sur qu'il faille mettre # mais plutôt 'rule' => '/^[0-9]{10}$/'