Bonjour à tous !
J'ai deux controller distinct, j'aimerais appelle une fonction private d'un controlleur dans un autre controller.
Problème, il ne prend pas en compte mon appelle.
Voici mon erreur :
SQL Error: 1064: You have an error in your SQL syntax; check the manual that corresponds
to your MySQL server version for the right syntax to use near '__GetPoisId' at line 1 [APP\webroot\cake\libs\model\datasources\dbo_source.php, line 684]
Query: __GetPoisId
GetPoisId ==> Ma fonction private.
Apparament cakephp interprète cela comme une requête SQL et non un appelle de fonction.
Dois instancier un objet pour pouvoir appeler la fonction ?
Voici un exemple IDENTIQUE à ma structure.
class UtilisateursController extends AppController
{
var $name = "Utilisateurs";
$uses = ('Utilisateur','Message');
function VoirMessageUtilisateur( $utilisateur_id )
{
$messages = $this->Message->GetMessageUtilisateur($utilisateur_id); //ICI J'APPELLE MA FONCTION PRIVATE.
}
}
class MessagesController extends AppController
{
var $name = "Messages";
$uses = ('Message'};
function GetMessageUtilisateur( $utilisateur_id )
{
return $this->Utilisateur->find('all',array('conditions' => array('Message.utilisateur_id' => $utilisateur_id )));
}
}
heu oui en effet mais le problème ne vient pas de la.
Le code présent est à titre d'exemple.
Je veut tout simplement pouvoir appeler une fonction dans un autres controller sans passer par un requestAction.
Exemple: le find :)
met la function dans le model message et pas dans le controller
class Message extends AppModel
{
var $name = "Message";
var $belongsTo = 'Utilisateur';
function GetMessageUtilisateur( $utilisateur_id )
{
return $this->Utilisateur->find('all',array('conditions' => array('Message.utilisateur_id' => $utilisateur_id )));
}
}
Load ton model Utilisateur dans ton controller Message, sa sera mieux, on ne balance pas des fonction qui execute des requetes dans un model. $this->loadModel('Utilisateur');