Mise à jour 4-juin-2010: Cela semble être un bug dans MODx v 1.0.3, qui n'a rien à voir avec la fonction implosée mais plutôt un problème de mésaventure. les types de données correspondants dans la clause de filtre résultante. Le bug a été classé avec JIRA: MODX-2035.Fonction d'erreur d'analyse MODX implode (est-ce moi ou modx?)
Salut, je ne peux pas pour la vie de moi comprendre cela, peut-être que quelqu'un peut aider. En utilisant MODX, un formulaire prend des critères utilisateur pour créer un filtre et retourner une liste de documents. Le formulaire est un champ de texte et quelques cases à cocher. Si le champ de texte et les données de case à cocher sont affichés, la fonction fonctionne correctement; si seulement les données de case à cocher sont affichées la fonction fonctionne bien; mais si seulement les données du champ de texte est affiché, modx me donne l'erreur suivante:
Error: implode() [function.implode]: Invalid arguments passed.
Je l'ai testé ce en dehors de modx avec des fichiers plats et tout fonctionne bien me conduire à assumer un bogue existe dans modx. Mais je ne suis pas convaincu. Voici mon code:
<?php
$order = array('price ASC'); //default sort order
if(!empty($_POST['tour_finder_duration'])){ //duration submitted
$days = htmlentities($_POST['tour_finder_duration']); //clean up post
array_unshift($order,"duration DESC"); //add duration sort before default
$filter[] = 'duration,'.$days.',4'; //add duration to filter[] (field,criterion,mode)
$criteria[] = 'Number of days: <strong>'.$days.'</strong>'; //displayed on results page
}
if(!empty($_POST['tour_finder_dests'])){ //destination/s submitted
$dests = $_POST['tour_finder_dests'];
foreach($dests as $value){ //iterate through dests array
$filter[] = 'searchDests,'.htmlentities($value).',7'; //add dests to filter[]
$params['docid'] = $value;
$params['field'] = 'pagetitle';
$pagetitle = $modx->runSnippet('GetField',$params);
$dests_array[] = '<a href="[~'.$value.'~]" title="Read more about '.$pagetitle.'" class="tourdestlink">'.$pagetitle.'</a>';
}
$dests_array = implode(', ',$dests_array);
$criteria[] = 'Destinations: '.$dests_array; //displayed on results page
}
if(is_array($filter)){
$filter = implode('|',$filter);//pipe-separated string
}
if(is_array($order)){
$order = implode(',',$order);//comma-separated string
}
if(is_array($criteria)){
$criteria = implode('<br />',$criteria);
}
echo '<br />Order: '.$order.'<br /> Filter: '.$filter.'<br /> Criteria: '.$criteria;
//next: extract docs using $filter and $order, display user's criteria using $criteria...
?>
L'instruction echo est affiché au-dessus du message d'erreur MODX et le réseau de filtres $ est correctement implosé.
Toute aide permettra à mon ordinateur de ne pas voler par la fenêtre.
Merci
"modx" comme dans http://www.modxcms.de/? – VolkerK
Oui, le CMS/Framework PHP. – Ian
Et le message d'erreur contient-il un emplacement comme 'foo.php: 23'? Lequel des quatre implode() dans l'extrait de code provoque l'erreur? – VolkerK