2010-05-31 68 views
0

Update 4-June-2010:這似乎是MODx v 1.0.3中的一個錯誤,與implode函數無關,而是與mis-在生成的篩選器子句中匹配數據類型。 JIRA:MODX-2035已被提交。MODX解析錯誤函數implode(是我還是modx?)

嗨,我不能爲我的生活弄清楚這一點,也許有人可以幫助。

使用MODX表單採用用戶標準創建過濾器並返回文檔列表。該表單是一個文本字段和一些複選框。如果發佈了文本字段和複選框數據,則該函數可以正常工作;如果只是複選框數據發佈功能正常工作;但如果只是文本字段數據公佈,鏌鋣給了我以下錯誤:

Error: implode() [function.implode]: Invalid arguments passed.

我測試過這個鏌鋣之外與平面文件,這一切工作正常,導致我假設鏌鋣中存在錯誤。但我不相信。這裏是我的代碼:

<?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數組被正確分解。

任何幫助將使我的電腦不會飛出窗外。

感謝

+0

「modx」,如http://www.modxcms.de/? – VolkerK 2010-05-31 11:09:28

+0

是的,PHP CMS /框架。 – Ian 2010-05-31 11:47:19

+0

並且錯誤消息是否包含像'foo.php:23'這樣的位置?代碼片段中的四個implode()中的哪一個會導致錯誤? – VolkerK 2010-05-31 12:48:49

回答

0

我覺得你的問題就在這裏:

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

$dest_array可能是空的,如果$dests爲空,甚至沒有初始化。

+0

Hi @Arkh,與上面相同...添加了該檢查,但只有在發佈$ dests數據時纔會執行該調用。 – Ian 2010-05-31 13:45:48

0

這真的應該發佈在MODx論壇上。我喜歡stackoverflow,但MODx更利基。