Bonjour,
Je cherche à utiliser des fonctions d'autres controller afin de ne pas avoir à les dupliquer.
Je sais le faire selon le tuto de cette façon :
<?php $var = $this->request('Controller','function'); ?>
mais comment faire la même chose en passant une variable ?
D'avance merci.
Essaye ça:
public function request($controller,$action,$params = array()){
$controller .= 'Controller';
require_once(ROOT.DS.'controller'.DS.$controller.'.php');
$c = new $controller();
return call_user_func_array(array($c,$action),$params);
}
Puis
$var = $this->request('Pictures','test',array('param1','param2'));
cordialement
Antho
Merci d'avoir répondu, je viens d'asseayer et j'ai le message d'ereur suivant :
Fatal error: Call to undefined function test()
<?php $var = $this->request('Controller',test($arg);?>
As tu bien une fonction test dans ton controller ? (et question bête, as tu bien remplacer 'Controller' par le nom de ton controller ?
ma fonction test() existe bien dans mon controller et oui j'ai bien remplacé 'Controller'.
J'ai fais un test sans argument de la même fonction test() et cela fonctionne.
Je ne parviens pas à passer d'argument.
Je connais pas le tuto mais voici peut être une piste :
$var = $this->request('Controller','function', array("param" => $param);
Bonjour
$this->requestAction(
array('controller' => 'articles', 'action' => 'view'),
array('pass' => array(5))
);
trouvé là:
http://book.cakephp.org/2.0/fr/controllers.html#Controller::requestAction
Je ne sais pas utiliser requestAction mais en modifiant ma fonction request j'arrive (je crois) à avoir ce que je veux mais je ne sais pas comment passer mes paramètres :
function request($controller,$action,$params = NULL){
$controller .= 'Controller';
require_once ROOT.DS.'controller'.DS.$controller.'.php';
$c = new $controller();
if($params !== NULL){
return $c->$action('val1','val2');
}else{
return $c->$action();
}
}
appelée comme ceci :
$var = $this->request('Pictures','test','???');
debug($var);
la fonction test() :
function test($param1,$param2){
return $param1.' '.$param2;
}
Le résultat est :
val1 val2
Je voudrais remplacer les valeur "val1 et val2" inscrite en dur par d'autres valeurs issues de $params dans request.
En effet, j'ai répondu à coter de la question... faut dire que le MVC qu'a présenter Grafikart est très fortement inspiré de CakePHP :$
J'aurais du le savoir avant.
Cette même fonction est utilisée ailleurs (__construct du dispatcher).
Grand merci à toi Antho et aux autres d'avoir répondu.