2012-03-16 40 views
0

複数の選択ボックスを表示するには、次の方法を使用しています。osCMaxの選択ボックスで、複数のデフォルト値または以前に選択した値を選択します。

echo tep_draw_pull_down_menu("cat[$i][]", $cat_array, '', 'id=cat3, size=5 multiple'); 

編集フォームでは、デフォルトで値が選択され、追加フォームに挿入されます。

デフォルトで選択される値は配列に格納されます。だから私は配列を次のようなデフォルト値に渡しました。

echo tep_draw_pull_down_menu("cat[$i][]", $cat_array, "$arr", 'id=cat3, size=5 multiple'); 

しかし、それは必要な値を選択しませんでした。配列をデフォルト値に渡すことはできないため、一度に1つの値しか選択しませんでした。

どうすればよいですか?

+0

誰でもこの質問に回答できますか? – Ahmad

答えて

1

コードベースの一部を変更しないとできません。

デフォルトでは、tep_draw_pull_down_menuメソッドは文字列を許可してチェックするだけです。それは、チェックするために複数の値を渡すことを全く期待していません。

編集で見つかったtep_draw_pull_down_menu方法/機能を備えて/ html_output.phpこのライン(クリーンの312は、インストールの周り)を見て、次へ

if ($default == $values[$i]['id']) { 

変更を:

if ($default == $values[$i]['id'] || (is_array($default) && in_array($values[$i]['id'], $default))) { 

余分なビットは、$default変数が渡されたかどうかを確認するためのチェックを追加し、そうであればselectオプションの現在の値がそこにあるかどうかを確認します。両方のカウントで「はい」の場合は、オプションを選択済みとしてマークします。ここで

は、使用中のそれの例です:

$cat_array[] = array("id" => 'marvelman', "text" => 'Kimota!'); 
$cat_array[] = array("id" => 'rorschach', "text" => 'hurm'); 
$cat_array[] = array("id" => 'cerebus', "text" => 'Something Fell'); 
$cat_array[] = array("id" => 'wolvie', "text" => 'Snikt!'); 
$cat_array[] = array("id" => 'spider-man', "text" => 'Thwip'); 

$arr = array('rorschach', 'wolvie', 'cerebus'); 

echo tep_draw_pull_down_menu("cat[$i][]", $cat_array, $arr, 'id="cat3" size="5" multiple'); 

また、あなたは明示的に値をその配列とは対照的に、文字列$arrを渡したい場合を除き、引用符で$arr変数を渡したくないことがあります。

+0

ご協力ありがとうございます。それは私の問題を解決しました。 – Ahmad

関連する問題