Автор Тема: Не могу получить данные в контроллере CartController.php функции init()  (Прочитано 924 раз)

13 Октябрь 2015, 15:33:49
  • Фрилансер
  • *
  • Сообщений: 164
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В контроллере есть
public function init()
{
parent::init();

// Send noindex to avoid ghost carts by bots
header("X-Robots-Tag: noindex, nofollow", true);

// Get page main parameters
$this->id_product = (int)Tools::getValue('id_product', null);
$this->id_product_attribute = (int)Tools::getValue('id_product_attribute', Tools::getValue('ipa'));
$this->customization_id = (int)Tools::getValue('id_customization');
$this->qty = abs(Tools::getValue('qty', 1));
$this->id_address_delivery = (int)Tools::getValue('id_address_delivery');
$this->textklient = Tools::getValue('textklient');
 
}
Данные полученные с страницы товара, я так понимаю.
Почему с страницы товара свои введенные данные в созданное поле textklient,
результат пустое.
Tools::getValue('textklient') – пусто.
Где копать. С престой я только начал..Только учусь , и консультации всегда рад.
Делал по ранее обсуждаемой теме.

Спасибо.
13 Октябрь 2015, 15:52:33
Ответ #1
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Не нужно дублироватьтемы. Вам уже отвели на этот вопрос.

Это не одна тема, таких несколько. В них написано как и куда добавлять.
http://prestashop-forum.ru/index.php/topic,5151.0.html
http://prestashop-forum.ru/index.php/topic,5112.msg30961.html
http://prestashop-forum.ru/index.php/topic,5188.0.html
13 Октябрь 2015, 15:55:57
Ответ #2
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В js перед передачей в контроллер
alert($('#perscod').val());показывает значение?

Вот так можно проверить передачу переменной в контроллер.
Все это уже писали в указанных темах.
13 Октябрь 2015, 16:16:41
Ответ #3
  • Фрилансер
  • *
  • Сообщений: 164
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Нет вы не поняли.. Проверить и так проверил.. Значение Пустое... в контроллере.
Вы правы.. обсуждали делаю по советам но результат вот этот..
Если бы в контроллер эта переменная попадала то дальше все идет ок.
Просто если я присвою в контроллере допустим количество, то дальше цепочка всего работает нормально и все ОК.
Почему textklient с станицы товара приходит сюда пустое?
13 Октябрь 2015, 16:22:49
Ответ #4
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Вы везде добавили эту переменную
1. В функцию ajaxCart.add ?
2. В класс  Cart.php ?
13 Октябрь 2015, 17:22:31
Ответ #5
  • Фрилансер
  • *
  • Сообщений: 164
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Да везде..
ajax-cart.js

ajaxCart.add($('#product_page_product_id').val(), $('#idCombination').val(), true, null, $('#quantity_wanted').val(), $('#textklient').val(), null);
data: 'controller=cart&add=1&ajax=true&qty=' + ((quantity && quantity != null) ? quantity : '1')+ '&textklient=' + textklient + '&id_product=' + idProduct + '&token=' + static_token + ( (parseInt(idCombination) && idCombination != null) ? '&ipa=' + parseInt(idCombination): ''),

В……………. Cart.php

public $textklient;
public function updateQty($quantity, $id_product, $id_product_attribute = null, $id_customization = false,
$operator = 'up', $id_address_delivery = 0, $textklient, Shop $shop = null, $auto_add_cart_rule = true)
В.. ………….CartController.php
   public function init()
{
parent::init();

// Send noindex to avoid ghost carts by bots
header("X-Robots-Tag: noindex, nofollow", true);

// Get page main parameters
$this->id_product = (int)Tools::getValue('id_product', null);
$this->id_product_attribute = (int)Tools::getValue('id_product_attribute', Tools::getValue('ipa'));
$this->customization_id = (int)Tools::getValue('id_customization');
$this->qty = abs(Tools::getValue('qty', 1));
$this->id_address_delivery = (int)Tools::getValue('id_address_delivery');
$this->textklient = Tools::getValue('textklient');
 
}
13 Октябрь 2015, 18:14:04
Ответ #6
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В этих файлах ?
/override/controllers/front/CartController.php
/override/classes/Cart.php
13 Октябрь 2015, 18:23:12
Ответ #7
  • Фрилансер
  • *
  • Сообщений: 164
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
13 Октябрь 2015, 18:57:39
Ответ #8
  • Фрилансер
  • *
  • Сообщений: 164
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Вообще я взял это решение из предыдущих обсуждений.
Хотел применить к своей мысли.
Мне не надо эту переменную выводить и не надо ее хранить.
Нужно просто вывести и получить ее только в контроллере CartController.php
Там сравнить .. и все.
13 Октябрь 2015, 19:33:01
Ответ #9
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
13 Октябрь 2015, 19:35:44
Ответ #10
  • Фрилансер
  • *
  • Сообщений: 164
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
<input type="text" name="textklient" id="textklient" class="text"   value="">
13 Октябрь 2015, 19:43:02
Ответ #11
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
В файле /themes/default-bootstrap/js/modules/blockcart/ajax-cart.js
$(document).on('click', '#add_to_cart button', function(e){
        // сделайте проверку переменной
        alert($('#textklient').val());
e.preventDefault();
        // вот тут нужно добавить свою переменную
ajaxCart.add( $('#product_page_product_id').val(), $('#idCombination').val(), true, null, $('#quantity_wanted').val(), $('#textklient').val(), null);
});
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
13 Октябрь 2015, 19:56:22
Ответ #12
  • Фрилансер
  • *
  • Сообщений: 164
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
13 Октябрь 2015, 19:59:57
Ответ #13
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
Это значит что у вас не правильно определено поле в шаблоне.
Переменная должна быть внутри тегов form, не должно быть второй такой с одинаковым ид.
Проверяйте свой шаблон.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
13 Октябрь 2015, 20:30:05
Ответ #14
  • Фрилансер
  • *
  • Сообщений: 164
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Поставлена в
<!-- add to cart form-->После
<input type="text" name="qty" id="quantity_wanted" class="text" value="{if isset($quantityBackup)}{$quantityBackup|intval}{else}{if $product->minimal_quantity > 1}{$product->minimal_quantity}{else}1{/if}{/if}" />Стоит моя.
<input type="text" name="textklient" id="textklient" class="text"   value="">