[Résolu] Action de module sureGetNodeByAlias Deprecated ? -
Tellurian - 19/03/2013
Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: 1.11.4
#~ Url du site :
#~ Hébergeur / Soft : wampserver
#~ Informations Système :
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~
Bonjour,
Je suis actuellement en train de créer un module sur mesure pour un projet de site assez complexe contenant un moteur de recherche multi-critères interne.
Ce module nommé Re7 dispose donc d'une action permettant l'affichage du formulaire dans le site et j'aimerais pouvoir préciser lors de l'appel du module la page de destination sur laquelle sera affiché les résultats lors de la validation en POST
Afin de récupérer l'id à passer en paramètre lors de la création du formulaire avec la ligne suivante (la variable $dest_page) :
Code :
[== PHP ==]
$smarty->assign('startform', $this->CreateFrontendFormStart($id, $dest_page, 're7-seach-form', 'post'));
J'utilise le code suivant (Repris du module News, dernière version : 2.12.10) dans mon script PHP "action.search-form.php" :
Code :
[== PHP ==]
// Page du résultat de la recherche. Utilise la page en cours par défaut.
$dest_page = $returnid;
if (isset($params['resultpage']))
{
$manager = $gCms->GetHierarchyManager();
$node = $manager->sureGetNodeByAlias($params['resultpage']);
print_r($node);
if (isset($node))
$dest_page = $node->getID();
else
$node = $manager->sureGetNodeById($params['resultpage']);
if (isset($node))
$dest_page = $params['resultpage'];
}
Action appelée via l'appel Smarty suivant :
Code :
[== HTML ==]
{Re7 action="search-form" resultpage="recherche-runs"}
L'appel se fait correctement et le paramètre "resultpage" est bien récupéré (vérifié avec un simple die($params["resultpage"]) dans action.search-form.php.
Par contre sureGetNodeByAlias ne renvoi rien alors que la page existe bien dans mon arborescence et qu'elle porte bien comme alias "recherche-runs".
A noter que j'utilise le module multilingue MleCMS (v 1.11.4, dernière version)
Pouvez-vous m’éclairer sur ce problème ? Merci.
[Résolu] Action de module sureGetNodeByAlias Deprecated ? -
exacore - 19/03/2013
Salut,
Comment est défini « $manager » dans ton module ?
Ce que je veux dire par là c'est : Est-ce que tu as une ligne de ce genre ?
Code :
[== PHP ==]
$manager =& $gCms->GetHierarchyManager();
[Résolu] Action de module sureGetNodeByAlias Deprecated ? -
Tellurian - 19/03/2013
C'est indiqué dans cet extrait de code :
Code :
[== PHP ==]
// Page du résultat de la recherche. Utilise la page en cours par défaut.
$dest_page = $returnid;
if (isset($params['resultpage']))
{
$manager = $gCms->GetHierarchyManager();
$node = $manager->sureGetNodeByAlias($params['resultpage']);
print_r($node);
if (isset($node))
$dest_page = $node->getID();
else
$node = $manager->sureGetNodeById($params['resultpage']);
if (isset($node))
$dest_page = $params['resultpage'];
}
Le print_r n'affiche rien, c'est donc que
sureGetNodeByAlias ne renvoi rien.
A noter que j'utilise PHP 5.4.3 qui ne nécessite plus de spécifier qu'il s'agit d'un passage de variable par référence (&=)
J'ai vérifié, l'objet
manager est bien récupéré, je ne vois pas là...
[Résolu] Action de module sureGetNodeByAlias Deprecated ? -
exacore - 19/03/2013
Oula, j'avais les yeux complètement à la ramasse pour te demander çà... Je laisse ma place car je dois rendre un projet en fin d'après-midi.
[Résolu] Action de module sureGetNodeByAlias Deprecated ? -
Jean le Chauve - 20/03/2013
Peut-être une piste ici :
http://www.cmsmadesimple.fr/forum/viewtopic.php?id=4865
[Résolu] Action de module sureGetNodeByAlias Deprecated ? -
heriquet - 20/03/2013
Salut,
Je ne comprend pas ceci :
Code :
[== Indéfini ==]
else
$node = $manager->sureGetNodeById($params['resultpage']);
Tu récupères le $node avec une fonction qui cherche par ID, et à laquelle tu passes un alias ???
Où j'ai loupé une étape... où y a déjà un souci de ce côté là.
Essaie de remplacer $dest_page par un vrai numéro de page, celui qu'il est sensé renvoyer via ton code, pour voir si déjà ceci fonctionne.
Code :
[== Indéfini ==]
$smarty->assign('startform', $this->CreateFrontendFormStart($id, $dest_page, 're7-seach-form', 'post'));
Peux-tu nous montrer le résultat de ton print_r($node); ? Et aussi de print_r($params);
[Résolu] Action de module sureGetNodeByAlias Deprecated ? -
Tellurian - 20/03/2013
Oui j'ai déjà testé en utilisant l'id(numérique) de la page directement et çà fonctionne.
Le code avec la partie sureGetNodeById vient du module News, il permet en fait justement de traiter le cas de figure où l'on souhaite appeler la page en indiquant un id directement dans le module comme : {Re7 resultpage=67} par exemple.
La première partie du code récupère la page par l'alias (enfin, normalement) mais si cette technique échoue, on essaye de récupérer la page par l'id numérique (A ce propos, il serait plus juste d'utiliser une méthode de type "isNodeExist" ou quelque chose de ce genre).
Par défaut c'est l'id de la page en cours qui est utilisé ($returnid).
Je pense que ce problème est peut être lié à l'utilisation du module MleCMS étant donné qu'il gère les langues à l'aide de l'alias des pages.
Je vais aller débuger depuis l'API interne du CMS pour trouver..
A la base mon post visé surtout à savoir si la méthode sureGetNodeByAlias n'était pas passé à deprecated avec la dernière version du CMS.
Merci quand même.
Edit :
Le var_dump($node) retourne "NULL" mais le var_dump de $params retourne :
array(13) {
["action"]=>
string(11) "search-form"
["resultpage"]=>
string(17) " recherche-runs"
["module"]=>
string(3) "Re7"
["returnid"]=>
int(62)
["re7-search-form-titre"]=>
string(0) ""
["re7-search-form-input-type_record"]=>
string(1) "0"
["re7-search-form-input-plateforme"]=>
string(1) "0"
["re7-search-form-input-multi"]=>
string(1) "0"
["re7-search-form-input-from"]=>
string(1) "0"
["re7-search-form-input-to"]=>
string(1) "0"
["re7-search-form-input-developpeur"]=>
string(1) "0"
["re7-search-form-input-runner"]=>
string(1) "0"
["re7-search-form-submit"]=>
string(8) "Chercher"
}
Il y'a 3 tabulation dans ma variable resultpage o_O
Un simple trim a suffit à corrigé le problème du coup mais je comprends pas pourquoi j'ai ces tabulations.
Edit 2 :
Je suis un boulet !
Mon appel du module dans mon gabarit est le suivant :
Code :
[== Indéfini ==]
{Re7 action="search-form" resultpage="recherche-runs"|indent:3:"\t"}
Et l'indentation n'est pas effectué sur le rendu du module mais sur la variable.
Désolé de vous avoir fait perdre votre temps.
Je classe le topic.
[Résolu] Action de module sureGetNodeByAlias Deprecated ? -
heriquet - 20/03/2013
Ok.
Bah sinon...
http://apidoc.cmsmadesimple.org/