Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[Решено] условие на опции


Recommended Posts

Здравствуйте. 2 дня ломаю голову. вывод опции, группу опций, тип опций по одному.

как задать условие, чтобы при динамичном создании опций, не повторялись?

Надіслати
Поділитися на інших сайтах


вот код

    'source': function(request, response) {
        $.ajax({
            url: 'index.php?route=catalog/option/autocomplete&token=<?php echo $token; ?>&filter_name=' +  encodeURIComponent(request),
            dataType: 'json',
            success: function(json) {
                response($.map(json, function(item) {
                    return {
                        category: item['category'],
                        label: item['name'],
                        value: item['option_id'],
                        type: item['type'],
                        option_value: item['option_value']
                    }
                }));
            }
        });
    },

задавать условие тут бесполезно.

 

или тут?

    'select': function(item) {
        html  = '<div class="tab-pane" id="tab-option' + option_row + '">';
        html += '    <input type="hidden" name="product_option[' + option_row + '][product_option_id]" value="" />';
        html += '    <input type="hidden" name="product_option[' + option_row + '][name]" value="' + item['label'] + '" />';
        html += '    <input type="hidden" name="product_option[' + option_row + '][option_id]" value="' + item['value'] + '" />';
        html += '    <input type="hidden" name="product_option[' + option_row + '][type]" value="' + item['type'] + '" />';

        html += '    <div class="form-group">';
        html += '      <label class="col-sm-2 control-label" for="input-required' + option_row + '"><?php echo $entry_required; ?></label>';
        html += '      <div class="col-sm-10"><select name="product_option[' + option_row + '][required]" id="input-required' + option_row + '" class="form-control">';
        html += '          <option value="1"><?php echo $text_yes; ?></option>';
        html += '          <option value="0"><?php echo $text_no; ?></option>';
        html += '      </select></div>';
        html += '    </div>';

        if (item['type'] == 'text') {
            html += '    <div class="form-group">';
            html += '      <label class="col-sm-2 control-label" for="input-value' + option_row + '"><?php echo $entry_option_value; ?></label>';
            html += '      <div class="col-sm-10"><input type="text" name="product_option[' + option_row + '][value]" value="" placeholder="<?php echo $entry_option_value; ?>" id="input-value' + option_row + '" class="form-control" /></div>';
            html += '    </div>';
        }

...........

..............

................

}

Надіслати
Поділитися на інших сайтах


Я уже не первый раз Вам отвечаю.. Включите голову.. 

Только что, Miha7685776 сказал:

или тут?

Тут лишь вывод ответа от сервера.. Соответственно, на стороне сервера, а именно в контроллере который указан в Ajax, то есть в методе autocomplete делайте всю логику.. Проверяйте ID..

Змінено користувачем Гість
Надіслати
Поділитися на інших сайтах

Только что, Miha7685776 сказал:

а причем тут контроллер автокомплита? 

опции

1 строка размер

2 строка, уже нет размера.

причем тут контроллер?

 

Ну наверное потому что контроллер решает что куда и зачем, согласны?))

Надіслати
Поділитися на інших сайтах

Только что, Miha7685776 сказал:

брежу) блин сложная схема. может есть какой нибудь модуль?

 

Сделал бы, но я занят.. Отвлекаюсь на форум, да бы мозг  не вскипел )))

Надіслати
Поділитися на інших сайтах

ну как автокомплит может проверять?

    public function autocomplete() {
        $json = array();

        if (isset($this->request->get['filter_name'])) {
            $this->language->load('catalog/option');

            $this->load->model('catalog/option');

            $this->load->model('tool/image');

            $filter_data = array(
                'filter_name' => $this->request->get['filter_name'],
                'start'       => 0,
                'limit'       => 5
            );

            $options = $this->model_catalog_option->getOptions($filter_data);

            foreach ($options as $option) {
                $option_value_data = array();

                if ($option['type'] == 'select' || $option['type'] == 'radio' || $option['type'] == 'checkbox' || $option['type'] == 'image') {
                    $option_values = $this->model_catalog_option->getOptionValues($option['option_id']);

                    foreach ($option_values as $option_value) {
                        if (is_file(DIR_IMAGE . $option_value['image'])) {
                            $image = $this->model_tool_image->resize($option_value['image'], 50, 50);
                        } else {
                            $image = $this->model_tool_image->resize('no_image.png', 50, 50);
                        }

                        $option_value_data[] = array(
                            'option_value_id' => $option_value['option_value_id'],
                            'name'            => strip_tags(html_entity_decode($option_value['name'], ENT_QUOTES, 'UTF-8')),
                            'image'           => $image
                        );
                    }

                    $sort_order = array();

                    foreach ($option_value_data as $key => $value) {
                        $sort_order[$key] = $value['name'];
                    }

                    array_multisort($sort_order, SORT_ASC, $option_value_data);
                }

                $type = '';

                if ($option['type'] == 'select' || $option['type'] == 'radio' || $option['type'] == 'checkbox' || $option['type'] == 'image') {
                    $type = $this->language->get('text_choose');
                }

                if ($option['type'] == 'text' || $option['type'] == 'textarea') {
                    $type = $this->language->get('text_input');
                }

                if ($option['type'] == 'file') {
                    $type = $this->language->get('text_file');
                }

                if ($option['type'] == 'date' || $option['type'] == 'datetime' || $option['type'] == 'time') {
                    $type = $this->language->get('text_date');
                }

                $json[] = array(
                    'option_id'    => $option['option_id'],
                    'name'         => strip_tags(html_entity_decode($option['name'], ENT_QUOTES, 'UTF-8')),
                    'category'     => $type,
                    'type'         => $option['type'],
                    'option_value' => $option_value_data
                );
            }
        }

        $sort_order = array();

        foreach ($json as $key => $value) {
            $sort_order[$key] = $value['name'];
        }

        array_multisort($sort_order, SORT_ASC, $json);

        $this->response->addHeader('Content-Type: application/json');
        $this->response->setOutput(json_encode($json));
    }

 

Надіслати
Поділитися на інших сайтах


nexus, чтобы этот комплит ловил ид, то надо ему отправить уже созданные   'option_id'    => $option['option_id'], а если ловить уже созданные, то можно былобы на месте сделать условие

Надіслати
Поділитися на інших сайтах


вариантов 2 

Или фильтровать перед записью в базу, в модели или при подгрузке и выборе опции присваивать строке идентификатор и при следующей загрузке в автокомплите проверять наличие этого идентификатора

Надіслати
Поділитися на інших сайтах


оказалось до безобразия легко. вешаем класс на селекты. проверяем на наличие активных опций. если совпадает, то убираем пункт на данном активном селекте. 

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.