0

2010 年 6 月 4 日更新:这似乎是 MODx v 1.0.3 中的一个错误,与 implode 函数无关,而是生成的过滤器子句中数据类型不匹配的问题。错误已提交给 JIRA:MODX-2035。

嗨,我一生无法弄清楚这一点,也许有人可以提供帮助。

使用 MODX 表单采用用户标准来创建过滤器并返回文档列表。该表单是一个文本字段和几个复选框。如果同时发布了文本字段和复选框数据,则该功能可以正常工作;如果仅发布了复选框数据,则该功能可以正常工作;但如果只发布文本字段数据,modx 会给我以下错误:

错误:implode() [function.implode]:传递的参数无效。

我已经在 modx 之外使用平面文件对此进行了测试,一切正常,这让我假设 modx 中存在错误。但我不相信。这是我的代码:

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

echo 语句显示在 MODX 错误消息上方,并且 $filter 数组正确内爆。

任何帮助都会使我的计算机免于飞出窗外。

谢谢

4

2 回答 2

0

我认为您的问题出在此处:

$dests_array = implode(', ',$dests_array); 

$dest_array如果为空,则可能为空,甚至未初始化$dests

于 2010-05-31T12:49:57.577 回答
0

这真的应该发布在 MODx 论坛上。我喜欢 stackoverflow,但 MODx 更适合小众。

于 2010-08-27T06:38:35.540 回答