Выберите несколько значений по умолчанию или ранее выбранных значений в поле выбора в osCMax - PullRequest
0 голосов
/ 16 марта 2012

Я использую следующий метод для отображения поля множественного выбора, и он отлично работает в новой форме.

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 Ответ

1 голос
/ 18 марта 2012

Вы не сможете без изменения некоторой кодовой базы.

По умолчанию метод tep_draw_pull_down_menu разрешает только проверку строк.Нельзя ожидать, что будет передано более одного значения для проверки.

Отредактируйте метод tep_draw_pull_down_menu, найденный в , включает / functions / html_output.php , посмотрев на эту строкуоколо 312 чистой установки):

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

Измените его на следующее:

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

Дополнительный бит добавляет проверку, чтобы проверить, была ли переданная переменная $default массивоми, если это так, если текущее значение опции выбора там.Если да в обоих случаях, пометьте параметр как выбранный.

Вот пример его использования:

$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 в противоположность ее массиву значений.

...