Nameless Опубликовано: февраля 24, 2016 Жалоба Поделиться Опубликовано: февраля 24, 2016 Прошу помощи дать пример кода на выполнение вот такого sql запроса: UPDATE `product_option_value` SET `subtract` = '0' WHERE `quantity` <= '0'; нужна возможность запускать этот запрос по кнопки из админки раздел товары в шаблоне product_list.tpl Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
savage4pro Опубликовано: февраля 24, 2016 Жалоба Поделиться Опубликовано: февраля 24, 2016 пример кода не дам, но сделать это не сложно вы можете обойтись созданием нового контроллера или редактированием любого удобного, например, ControllerCatalogProduct (но лучше все же отдельный) добавляете новый public метод, например updateSubtract, в котором для начала проверяете разрешение пользователю на запись $this->user->hasPermission('modify', 'catalog/product') а затем выполняете ваш запрос $this->db->query("UPDATE " . DB_PREFIX . "product_option_value ..."); после этого вы можете вызывать данный метод из строки браузера а чтобы кнопкой, то редактируйте шаблон списка, добавив кнопку в желаемое место .tpl и по клику на нее выполняйте ajax-запрос к новому методу, не забудьте только передать token Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Nameless Опубликовано: февраля 24, 2016 Автор Жалоба Поделиться Опубликовано: февраля 24, 2016 Те нужно создать admin/controller папку myqyery в ней фай myqyery.php с таким кодом: <?php public function updateSubtract() { if (!$this->user->hasPermission('modify', 'catalog/product')) { $this->error['warning'] = $this->language->get('error_permission'); } $this->db->query("UPDATE " . DB_PREFIX . "`product_option_value` SET `weight` = '0' WHERE `quantity` <= '0'"); return $this->updateSubtract; } } Далее дописать по аналогии на пример в product_list.tpl : <button type="button" class="btn btn-default" onclick="$('#form-product').attr('action', '<?php echo $updateSubtract; ?>').submit()"><i class="fa fa-minus"></i></button> Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
savage4pro Опубликовано: февраля 24, 2016 Жалоба Поделиться Опубликовано: февраля 24, 2016 нуу.. почти во-первых, return метода точно не должен быть вызовом этого же метода для того, чтобы заполнять массив error класса контроллера, надо его задать как свойство класса, у вас же в новом контроллере и класс не задан вовсе заполняйте ошибкой или количеством проапдейченых строк локальную переменную, например, $json и возвращайте ее $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); в tpl не отправляйте форму, а делайте ajax-запрос, поищите пример отправки такого запроса в этом же файле, по типу содержимого autocomplete.source Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Nameless Опубликовано: февраля 24, 2016 Автор Жалоба Поделиться Опубликовано: февраля 24, 2016 таак начинаю подзапутываться, и так php файл будет выгледеть тогда так: <?php public function updateSubtract() { if (!$this->user->hasPermission('modify', 'catalog/product')) { $this->error['warning'] = $this->language->get('error_permission'); } $this->db->query("UPDATE " . DB_PREFIX . "`product_option_value` SET `weight` = '0' WHERE `quantity` <= '0'"); $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } } а вот про autocomplete.source нашел только подобные конструкции: <script type="text/javascript"><!-- $('input[name=\'filter_name\']').autocomplete({ Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
savage4pro Опубликовано: февраля 24, 2016 Жалоба Поделиться Опубликовано: февраля 24, 2016 2 часа назад, Nameless сказал: таак начинаю подзапутываться, и так php файл будет выгледеть тогда так: вот так, с определением вашего класса и заполнением переменной <?php class ControllerMyqyeryMyqyery extends Controller { public function updateSubtract() { $json = array(); if (!$this->user->hasPermission('modify', 'catalog/product')) { $json['warning'] = $this->language->get('error_permission'); } $this->db->query("UPDATE " . DB_PREFIX . "`product_option_value` SET `weight` = '0' WHERE `quantity` <= '0'"); $json['success'] = (int)$this->db->countAffected(); $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } } 2 часа назад, Nameless сказал: а вот про autocomplete.source нашел только подобные конструкции: свойство autocomplete'а я привел как пример для ajax-запроса, только у вас он будет проще, примерно такой <script type="text/javascript"> $(document).ready(function() { $('#id-вашей-кнопки').on('click',function(){ $.ajax({ url: 'index.php?route=myqyery/myqyery/updateSubtract&token=<?php echo $token; ?>', dataType: 'json', success: function(json) { if (json.warning) { alert(json.warning); } else if (json.success) { alert('Обновлено строк: ' + json.success); } } }); }); }); </script> Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Nameless Опубликовано: февраля 24, 2016 Автор Жалоба Поделиться Опубликовано: февраля 24, 2016 увы не завелось, добавил в admin/view/template/catalog/product_list.tpl: Кнопку: <button type="button" class="btn btn-default" onclick="$('#product-update-subtract').attr('action', '<?php echo $updateSubtract; ?>').submit()"><i class="fa fa-minus"></i></button> (она отобразилась, но по клику не чего не происходит) ниже с блоками скриптов в этом же файле добил и наш: <script type="text/javascript"> $(document).ready(function() { $('#product-update-subtract').on('click',function(){ $.ajax({ url: 'index.php?route=myqyery/myqyery/updateSubtract&token=<?php echo $token; ?>', dataType: 'json', success: function(json) { if (json.warning) { alert(json.warning); } else if (json.success) { alert('Обновлено строк: ' + json.success); } } }); }); }); </script> создал файл myqyery.php в директорию admin/controller/myqyery с кодом: <?php class ControllerMyqyeryMyqyery extends Controller { public function updateSubtract() { $json = array(); if (!$this->user->hasPermission('modify', 'catalog/product')) { $json['warning'] = $this->language->get('error_permission'); } $this->db->query("UPDATE " . DB_PREFIX . "`product_option_value` SET `weight` = '0' WHERE `quantity` <= '0'"); $json['success'] = (int)$this->db->countAffected(); $this->response->addHeader('Content-Type: application/json'); $this->response->setOutput(json_encode($json)); } } Чего упустил? Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
savage4pro Опубликовано: февраля 24, 2016 Жалоба Поделиться Опубликовано: февраля 24, 2016 10 минуту назад, Nameless сказал: увы не завелось, добавил в admin/view/template/catalog/product_list.tpl: Кнопку: <button type="button" class="btn btn-default" onclick="$('#product-update-subtract').attr('action', '<?php echo $updateSubtract; ?>').submit()"><i class="fa fa-minus"></i></button> (она отобразилась, но по клику не чего не происходит) а что по-вашему должно произойти? будь я на месте браузера с подгруженным jquery, я бы по клику на эту кнопку нашел элемент #product-update-subtract, добавил бы ему атрибут action и попробовал бы его отправить как форму.. хотя нет, даже пробовать бы не стал, потому как такого элемента я так и не найду Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Nameless Опубликовано: февраля 24, 2016 Автор Жалоба Поделиться Опубликовано: февраля 24, 2016 а как тогда правильно будет? я просто по аналогии сделал с другими кнопками Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
savage4pro Опубликовано: февраля 24, 2016 Жалоба Поделиться Опубликовано: февраля 24, 2016 <button type="button" class="btn btn-warning" id="product-update-subtract"><i class="fa fa-refresh"></i></button> Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Nameless Опубликовано: февраля 24, 2016 Автор Жалоба Поделиться Опубликовано: февраля 24, 2016 прям от души! все заработало, надеюсь через несколько деньков опубликую в ветки выше для чего все это нужно было) Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сейчас и зарегистрироваться позже. Если у вас есть учётная запись, войдите, чтобы публиковать под своей учётной записью.