RunAction

De Sydonie

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" .

Tableau des paramètres optionnelles acceptées par la fonction
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)