0

アップデート4-2010年6月:これはMODx v 1.0.3のバグのようです。これは、implode関数とは関係ありませんが、結果のfilter句のデータ型が一致しないという問題です。バグはJIRA:MODX-2035に報告されています。

こんにちは、私は私の人生のためにこれを理解することはできません、多分誰かが助けることができます。

MODXを使用すると、フォームはユーザー基準を使用してフィルターを作成し、ドキュメントのリストを返します。フォームは1つのテキストフィールドといくつかのチェックボックスです。テキストフィールドとチェックボックスデータの両方が投稿されている場合、関数は正常に機能します。チェックボックスデータのみが投稿された場​​合、関数は正常に機能します。しかし、テキストフィールドデータだけが投稿された場​​合、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 フォーラムに投稿する必要があります。私はスタックオーバーフローが大好きですが、MODx はもっとニッチです。

于 2010-08-27T06:38:35.540 に答える