Обновление от 4 июня 2010 года: похоже, что это ошибка в MODx v 1.0.3, не связанная с функцией выгрузки, а скорее проблема с несовпадающими типами данных в результирующем предложении фильтра. Ошибка была подана в 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 корректно развернут.
Любая помощь спасет мой компьютер от вылетания из окна.
Спасибо