Bonjour,
J'ai une variable défini au niveau de mon AppController :

    public $_var = 'abc';

J'arrive donc à la retrouver dans tous mes controllers mais je voudrais la retrouver dans ma classe Auth Personnalisé dans /Controller/Component/Auth/CustomAuthentificate.php

Si vous avez une idée, merci ;)

3 réponses


Inspirat
Réponse acceptée

Dans ce cas, un simple appel à la fonction suffit:

// app/Controller/AppController.php
public $components = array('CustomAuthenticate');

public function beforeFilter(){
    parent::beforeFilter();
    $this->CustomAuthenticate->set($_var); // Dans ce cas $_var est un tableau
}

// app/Controller/Component/Aut/CustomAuthenticate.php
public $_var = array();

public function set($_var = array()){
    $this->_var = $_var;
}

Il faut passer tes variables en paramètre lors de la création de l'instance de ton composant dans ton controller:

// app/Controller/AppController.php
public $component = array(
    'Session',
    'Cookie',
    'CustomAuth' => array('variable' => $_var)
);

// app/Controller/Component/Auth/CustomAuthentificate.php
public $_var = array();

public function __construct(ComponentCollection $collection, $_var = array()){
    $this->_var = $_var;
}

Et au cas ou, la documentation (en français) de CakePHP: Components (Composants)

Bonjour,
Oui, j'avais essayé ça mais je défini ma variable dans le beforeFilter au niveau de l'app controller du coup quand il initialise ma classe, la variable est vide ...