Автор Тема: Добавление нового поля в ps_cart_product  (Прочитано 353 раз)

02 Октября 2015, 16:00:17
  • Старожил
  • ****
  • Сообщений: 258
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Всем доброго дня!
Прошу подсказать решение такого вопроса..
Добавил в  ps_cart_product  поле  textrez
Текстовое поле.
Обозначил в cart.php
public  $textrez;
public static $definition = array(……….
…………
' textrez ' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'size' => 200),
Запись производиться в cart.php  тут
$result_add = Db::getInstance()->insert('cart_product', array(…….
' textrez ' =>
Вот теперь вопрос следующий.
В карточке товара, product.tpl,  добавлено поле ввода
<input  type="text"  id=" textcart "  name="textcart"  class="text" >Как теперь присвоить значению в  cart.php   
$result_add = Db::getInstance()->insert('cart_product', array(…….
' textrez ' => (значение),
Значение из
<input  type="text"  id=" textcart "  name="textcart"  class="text" >При нажатии кнопки в карзину.
То есть
' textrez ' => $textcartТак не идет…..
Спасибо!!
02 Октября 2015, 16:08:49
Ответ #1
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 32991
  • Репутация: +26759/-0
    • Просмотр профиля
Поле должно быть внутри формы добавления товара
<form id="buy_block"
В контроллере CartController.php нужно получить значение из этого поля
$this->textrez = Tools::getValue('textrez');
02 Октября 2015, 16:37:55
Ответ #2
  • Старожил
  • ****
  • Сообщений: 258
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо!!
В CartController.php  есть добавление забал просто написать
public function init()
   {........
$this-> textrez = Tools::getValue(' textrez ');
 А вот насчет  <form id="buy_block"
Я что-то не понял.. ввод и так в форме product.tpl
<input  type="text"  id=" textcart "  name="textcart"  class="text" >
02 Октября 2015, 16:42:23
Ответ #3
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 32991
  • Репутация: +26759/-0
    • Просмотр профиля
Цитировать
А вот насчет  <form id="buy_block"
Я что-то не понял.. ввод и так в форме product.tpl
<input  type="text"  id=" textcart "  name="textcart"  class="text" >

product.tpl - это шаблон, а форма называется form id="buy_block", все что внутири тегов form будет передано в контроллер.
02 Октября 2015, 16:50:33
Ответ #4
  • Старожил
  • ****
  • Сообщений: 258
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо за ответы!!
Всего вам доброго!!
Пробую..
02 Октября 2015, 18:18:22
Ответ #5
  • Старожил
  • ****
  • Сообщений: 258
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Нет все равно не получилось..
Все везде вроде прописано.
В теме в  product.tpl  в form id="buy_block" ввод поле стоит
<input  type="text"  name="textcart"  class="text" >В CartController прописано
В cart.php  прописано
Что мне здесь в cart.php   в блоке
   $result_add = Db::getInstance()->insert('cart_product', array(
'id_product' => (int)$id_product,
'id_product_attribute' => (int)$id_product_attribute,
'id_cart' => (int)$this->id,
'id_address_delivery' => (int)$id_address_delivery,
'id_shop' => $shop->id,
'quantity' => (int)$quantity,
' textrez ' => 'My text',
В место 'My text' ставить.
Когда жестко стоит 'My text'  тогда все, заполняет поле..
Так как мне здесь объявить  переменную из  product.tpl   textcart
<input  type="text"  name="textcart"  class="text" >Спасибо!!
02 Октября 2015, 21:22:05
Ответ #6
  • Ветеран
  • *****
  • Сообщений: 1195
  • Репутация: +28/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Нужно передать эту переменную в
function updateQty (.... $textrez)
{
03 Октября 2015, 07:49:08
Ответ #7
  • Старожил
  • ****
  • Сообщений: 258
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Переменная и так прописана в Cart.php
public function updateQty($textrez, $quantity, $id_product, $id_product_attribute = null, $id_customization = false,
$operator = 'up', $id_address_delivery = 0, Shop $shop = null, $auto_add_cart_rule = true)
Толко она пустая
$textrez

03 Октября 2015, 10:51:19
Ответ #8
  • Старожил
  • ****
  • Сообщений: 258
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Осталось то совсем ничего..
В cart.php   сосчитать переменную textrez  набранную в карточке товара в теме product.tpl
<input  type="text"  name="textcart" id="id_textcart"   class="text" > Что может быть еще не так..
03 Октября 2015, 11:43:27
Ответ #9
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 85953
  • Репутация: +25399/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добавление товара в корзину функция ajaxCart.add( в файле /themes/default-bootstrap/js/modules/blockcart/ajax-cart.js, вот сюда добавляйте свою переменную $textrez
/*/for product page 'add' button... */
$(document).on('click', '#add_to_cart button', function(e){
e.preventDefault();
ajaxCart.add( $('#product_page_product_id').val(), $('#idCombination').val(), true, null, $('#quantity_wanted').val(), null);
});
в строке 277
add : function(idProduct, idCombination, addedFromProductPage, callerElement, quantity, whishlist, instructions, instructions_id)строка 315
data: 'controller=cart&add=1&ajax=true&qty=' + ((quantity && quantity != null) ? quantity : '1') + '&id_product=' + idProduct + '&token=' + static_token + ( (parseInt(idCombination) && idCombination != null) ? '&ipa=' + parseInt(idCombination): ''),
03 Октября 2015, 12:31:35
Ответ #10
  • Ветеран
  • *****
  • Сообщений: 20838
  • Репутация: +25276/-0
  • Prestashop - просто и эффективно
    • Просмотр профиля
У вас названия переменной в шаблоне и в контроллере не разные. Используйте одно название "textrez".
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
03 Октября 2015, 14:36:17
Ответ #11
  • Старожил
  • ****
  • Сообщений: 258
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Нет везде одинаковое
<input type="text" name="textrez" id="textrez" class="text"  value="" >Везде textrez вовсех контроллерах..
Пробовал и разные по первости но вернулся к одинаковым везде..
03 Октября 2015, 15:21:20
Ответ #12
  • Старожил
  • ****
  • Сообщений: 258
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Нет.. ничего не получилось..
Придется отказаться от данной идеи..
Ни как не получилось выдернуть из product.tpl переменную в cart.php что-бы там ее записать.
Если кто возмется оплачу.
Нипишите как связаться, нет так и туда нет.
04 Октября 2015, 10:16:52
Ответ #13
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 85953
  • Репутация: +25399/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В файле /classes/Cart.php как добавляли свою переменную?
04 Октября 2015, 13:56:29
Ответ #14
  • Ветеран
  • *****
  • Сообщений: 105576
  • Репутация: +39545/-0
    • Просмотр профиля
    • Webstudio UwK
Нет.. ничего не получилось..
Придется отказаться от данной идеи..
Ни как не получилось выдернуть из product.tpl переменную в cart.php что-бы там ее записать.
Если кто возмется оплачу.
Нипишите как связаться, нет так и туда нет.
Потому что нужно вносить измения в переопределнные класс и контроллер
/override/controllers/front/CartController.php
/override/classes/Cart.php
Cоздание интернет сайтов Webstudio UwK