RunAction
Lors du développement d'un template ou d'une action de Sydonie, on peut être amené à vouloir éxecuter une autre action sur un objet et, éventuellement, inclure le résultat de cette action dans la page courante.
Pour que sydonie exécute l'action "monAction" sur l'instance "$obj", on utilisera la fonction "runAction" de la façon suivante :
runAction($obj, "monAction");
Notons qu'en remplacant $obj par un nom de classe, il devient possible d'exécuter une action de classe. L'exemple suivant montre comment executer l'action "listItems" sur un document de type news.
runAction('SydonieDocument_News', "listItems");
Le résultat de l'action peut être affiché :
echo runAction($obj, "monAction");
ou transformé en chaine de caractère :
$result = runAction($obj, "monAction"); $str = (string)$result;
Pour Sydonie, l'exécution de l'action se déroule comme si l'on avait attaqué l'url "x32b/monAction", où x32b représente l'identifiant de l'instance $obj.
La fonction runAction accepte un troisième paramètre optionnel pour passer d'éventuelles informations supplémentaires au controleur qui exécutera l'action. En pratique, ce troisième paramètre est un tableau clés/valeurs qui permet de passer des arguments GET, POST ou des informations supplémentaires pour l'url.
L'exemple suivant permet d'exécuter l'action "monAction" sur l'entité "$obj" en passant un tableau de données POST ainsi qu'un tableau de données GET.
echo runAction($obj, "monAction", array( 'GET' => array('arg1' => 3, 'arg2' => 'toto'), 'POST' => array('arg3' => 52, 'arg4' => 'titi'), ));
Cela reviendrait à afficher le résultat de l'url "x32b/monAction?arg1=3&arg2=toto" en passant les données POST "arg3=52&arg4=titi" .
Clé | Type | Valeur | |
---|---|---|---|
GET | array | un tableau associatif clés/valeurs des arguments GET à passer à l'action | |
POST | array | un tableau associatif clés/valeurs des arguments POST à passer à l'action | |
format | string | le format de sortie désiré | |
terminal | string | le type de terminal en usage | |
path | string | le chemin demandé | |
language | string | le code de la langue demandé (ISO 2 caractères) |