首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MODX解析错误函数内爆(是me还是modx?)

MODX解析错误函数内爆(是me还是modx?)
EN

Stack Overflow用户
提问于 2010-05-31 11:03:53
回答 2查看 780关注 0票数 0

更新4-6-2010年:这似乎是MODx v1.0.3中的一个bug,与内爆函数无关,而是结果过滤器子句中不匹配的数据类型的问题。Bug已提交给JIRA: MODX-2035。

嗨,我无法为我的生活找到答案,也许有人能帮上忙。

使用MODX,表单需要用户条件来创建过滤器并返回文档列表。表单是一个文本字段和几个复选框。如果同时发布文本字段和复选框数据,则函数工作良好;如果仅张贴复选框数据,则函数工作良好;但如果仅张贴文本字段数据,modx将给出以下错误:

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

我已经用平面文件在modx之外测试过这一点,这一切都很好,这使我假设modx中存在一个bug。但我不相信。这是我的密码:

代码语言:javascript
复制
<?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数组被正确内爆。

任何帮助都能使我的电脑免于飞出窗外。

谢谢

EN

回答 2

Stack Overflow用户

发布于 2010-05-31 12:49:57

我认为你的问题就在这里:

代码语言:javascript
复制
$dests_array = implode(', ',$dests_array); 

如果$dest_array是空的,那么$dests可能是空的,甚至没有初始化。

票数 0
EN

Stack Overflow用户

发布于 2010-08-27 06:38:35

这确实应该在MODx论坛上发布。我喜欢堆栈溢出,但是MODx更适合。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2943070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档