CakePHP-Fr.Org

Forum francophone du Framework CakePHP

Vous n'êtes pas identifié.

#1 31-08-2016 16:51:36

nvalyfofana
Eclair café
Date d'inscription: 15-06-2016
Messages: 43

Controle de validation des listes deroulantes

Bonjour, j'aimerais mettre un contrôle et un message d'erreur au niveau de mes déroulantes dynamiques en cas de non sélection d'un élément de la liste.
Voici mon model de table:


<?php
namespace App\Model\Table;

use App\Model\Entity\Mission;
use Cake\ORM\Query;
use Cake\ORM\RulesChecker;
use Cake\ORM\Table;
use Cake\Validation\Validator;
use Cake\I18n\Time;
use Cake\I18n\Date;

/**
* Missions Model
*
* @property \Cake\ORM\Association\BelongsTo $Vehicules
* @property \Cake\ORM\Association\BelongsTo $Personnels
* @property \Cake\ORM\Association\BelongsTo $Typemissions
* @property \Cake\ORM\Association\BelongsTo $Communes
*/
class MissionsTable extends Table
{

    /**
     * Initialize method
     *
     * @param array $config The configuration for the Table.
     * @return void
     */

   /** public function validationComparisonField($check, $other_field) {
    if ($this->data[$this->alias][$other_field] > $check[key($check)]) {
        return true; // passed
    }

    return true; // not passed
    }  **/


    public function initialize(array $config)
    {
        parent::initialize($config);

        $this->table('missions');
        $this->displayField('name');
        $this->primaryKey('id');


        $this->addBehavior('Timestamp');

        $this->belongsTo('Vehicules', [
            'foreignKey' => 'vehicules_id',
            'joinType' => 'INNER'
        ]);
        $this->belongsTo('Personnels', [
            'foreignKey' => 'personnels_id',
            'joinType' => 'INNER'
        //    'conditions'=> array('Personnels.services_id = Service.id')
       //     'joinTable' => 'services',
       //     'associationForeignKey' => 'services_id'
           
        ]);
        $this->belongsTo('Typemissions', [
            'foreignKey' => 'typemissions_id',
            'joinType' => 'INNER'
        ]);
        $this->belongsTo('Communes', [
            'foreignKey' => 'communes_id',
            'joinType' => 'INNER'
        ]);

   $this->belongsTo('Missions2', [
            'foreignKey' => 'missions2_id',
            'joinType' => 'INNER'
        ]);

   $this->belongsTo('Chauffeurs', [
            'foreignKey' => 'chauffeurs_id',
            'joinType' => 'INNER'
        ]);
    }


/**   public $hasMany = array(
    'Personnel' => array(
      'className' => 'Personnel',
      'foreignKey' => 'services_id',
      'dependent' => false,
      'conditions' => '',
      'fields' => '',
      'order' => '',
      'limit' => '',
      'offset' => '',
      'exclusive' => '',
      'finderQuery' => '',
      'counterQuery' => ''
    )
  );   **/


    /**
     * Default validation rules.
     *
     * @param \Cake\Validation\Validator $validator Validator instance.
     * @return \Cake\Validation\Validator
     */
    public function validationDefault(Validator $validator)
    {
        $validator
            ->integer('id')
            ->allowEmpty('id', 'create');

        $validator
            ->allowEmpty('chauffeur');

        $validator
            ->allowEmpty('name');

        $validator
            ->allowEmpty('numordremission');

        $validator
            ->dateTime('dateheuresortie')
            ->allowEmpty('dateheuresortie');

        $validator
            ->integer('kilometragesortie')
            ->allowEmpty('kilometragesortie');

        $validator
            ->dateTime('dateprevueretour')
            ->allowEmpty('dateprevueretour');

        $validator
            ->dateTime('dateheureretour')
            ->allowEmpty('dateheureretour');

        $validator
            ->integer('kilometrageretour')
            ->allowEmpty('kilometrageretour');
          //  ->add('kilometrageretour' => ['rule' => array('equalsTo', 'kilometragesortie')]);
         //   ->add('kilometrageretour', 'no-misspelling', ['rule' => ['compareWith', 'kilometragesortie'],
         //                                                 'message' => 'Les mot de passe ne sont pas égaux',]);

        $validator
            ->integer('statut')
            ->allowEmpty('statut');

/**        $validator
            ->integer('observation')
            ->allowEmpty('observation');  **/

        return $validator;
    }

   
    /**
     * Returns a rules checker object that will be used for validating
     * application integrity.
     *
     * @param \Cake\ORM\RulesChecker $rules The rules object to be modified.
     * @return \Cake\ORM\RulesChecker
     */
    public function buildRules(RulesChecker $rules)
    {
        $rules->add($rules->existsIn(['vehicules_id'], 'Vehicules'));
        $rules->add($rules->existsIn(['personnels_id'], 'Personnels'));
        $rules->add($rules->existsIn(['chauffeurs_id'], 'Chauffeurs'));
        $rules->add($rules->existsIn(['typemissions_id'], 'Typemissions'));
        $rules->add($rules->existsIn(['communes_id'], 'Communes'));

         $check = function ($mission) {
        return ($mission->kilometragesortie < $mission->kilometrageretour) OR ($mission->kilometrageretour==0);
    };
    $rules->add($check, [
        'errorField' => 'kilometrageretour',
        'message' => 'Le kilometrage retour ne doit pas etre inferieur au kilometrage de sortie'
    ]);

    $check = function ($mission) {

    $string1 = $mission->dateheuresortie;
    $string2 = $mission->dateheureretour;

    $time1 = new Time($string1);
    $time2 = new Time($string2);

   // pr ($time2 > $time1);
      //  return ($mission->dateheuresortie < $mission->dateheureretour) OR ($mission->dateheureretour==NULL);
    return ($time1 < $time2) OR ($time2==NULL);
    };
    $rules->add($check, [
        'errorField' => 'dateheureretour',
        'message' => 'La date de retour est inferieur à la date de sortie'
    ]);



    $check = function ($mission) {

    $string1 = $mission->dateheuresortie;
    $string3 = $mission->dateprevueretour;

    $time1 = new Time($string1);
    $time3 = new Time($string3);

   // pr ($time2 > $time1);
      //  return ($mission->dateheuresortie < $mission->dateheureretour) OR ($mission->dateheureretour==NULL);
    return ($time1 < $time3) OR ($time3==NULL);
    };
    $rules->add($check, [
        'errorField' => 'dateprevueretour',
        'message' => 'La date de retour est inferieur à la date de sortie'
    ]);


        return $rules;
    }

}


Merci d'avance

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB
Traduction par FluxBB.fr