Firstly, your Validation Provider is better situated in your src/ directory 
(I personally use src/Model/Validation/Provider), so the filename will be 
src/Model/Validation/Provider/Validation.php and the FQN will be 
App\Model\Validation\Provider\Validation.php

Then in your ProjectValidation file, you would add:

$this->validator->provider('myProvider', 
'App\Model\Validation\Provider\Validation');

into your constructor.

Your '????' would then simply be 'myProvider'

As for your actual validation rule, please try not to directly use SQL. 
Your query is better written as:

$count = TableRegistry::get('Catalogue')
   ->find()
   ->where(['t_identifiant' => $check])
   ->count();


On Monday, 1 December 2014 17:02:46 UTC+2, Ernaelsten Gérard wrote:
>
> Hello, 
> I try to create my own validation, But I have an error of provider because 
> I do not know what to put.
>
> //vendor/maitrepylos/Validation.php
>
> <?php
>
> namespace Maitrepylos;
>
>
> use Cake\Datasource\ConnectionManager;
>
> class Validation extends \Cake\Validation\Validation {
>
>
>     public static function uniqueIdentifiant($check){
>
>         $pdo = ConnectionManager::get('default');
>         $sql =  'SELECT count(*) as compteur FROM catalogue WHERE 
> t_identifiant = ?';
>         $r = $pdo->prepare($sql);
>         $r->execute([$check]);
>         $d = $r->fetch(\PDO::FETCH_OBJ);
>
>         if($d->compteur > 0){
>             return false;
>         }
>
>         return true;
>
>
>
>     }
>
> }
>
>
>
> //App/Model/Validation/ProjectValidation.php
>
> <?php
> namespace App\Model\Validation;
>
>
> use Cake\Datasource\ConnectionManager;
> use Cake\Validation\Validator;
>
> class ProjectValidation
> {
>     public $validator = null;
>     public function __construct()
>     {
>         $this->validator = new Validator();
>
>
>     }
>
>     public function newFiche(){
>
>         $this->validator->requirePresence('t_titre', true)
>             ->notEmpty('t_titre', 'Le nom de la fiche ne peut être absente')
>             ->notEmpty('d_date_creation','La date ne peut être vide')
>             ->add('d_date_creation',[
>                 'checkDate'=>[
>                     'rule'=>['date','dmy'],
>                     'message' => 'La date doit-être au format d/m/Y'
>                 ]
>             ])
>             ->notEmpty('t_identifiant', 'L\'identifiant ne peut être vide')
>             ->add('t_identifiant',[
>                 'single' =>
>                     [
>                         'rule' => ['uniqueIdentifiant'],
>                         'provider'=>'??????????????????????????', //I don't 
> know 
>                        'message' => 'test unique'
>                     ]
>
>             ]);
>
>         return $this->validator;
>
>     }
>
>
> }
>
> Thank you for your help
>
>

-- 
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP

--- 
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/d/optout.

Reply via email to