Новости Joomla

Совет по Joomla: несколько значений по умолчанию в XML-формах для стандартных полей типа list

👩‍💻 Совет по Joomla: несколько значений по умолчанию в XML-формах для стандартных полей типа list.При работе над плагином возникла необходимость указать стандартный набор из нескольких элементов стандартного поля списка. И хотелось указать их в стандартном же атрибуте default для полей. Когда это нужно?Когда Ваши пользователи устанавливают плагин и НЕ заходят в настройки - в коде вы можете использовать значения по умолчанию с помощью класса Registry (писал об этом ранее) и всегда быть уверенным, что хоть какие-то жизненно необходимые параметры к вам придут всегда. 🧐 Но как сделать то же самое для интерфейса админки?Пользователя нужно направлять, предлагать очевидный работоспособный сценарий для начала, а дальше он уже сам разберется. Когда человек заходит в параметры свежеустановленного плагина в Form ещё нет данных и параметры по умолчанию выставляются из атрибутов default в xml-полях.
<field name="showdesc" type="radio"                       label="PLG_CFI_PARAM_SHOWDESC"                       class="btn-group btn-group-yesno"                       default="1">                    <option value="0">JNO</option>                    <option value="1">JYES</option>                </field>
Здесь по умолчанию будет включено "Да". И если пользователь не переключит параметр, то при сохранении мы ожидаемо получим "да" в params плагина.Для поля списков type=&quot;list&quot; можно указать значение по умолчанию и многие знают, что его можно указать только одно.
<field type="list"                       name="article_fields"                       label="article_fields"                       description="article_fields_desc"                       layout="joomla.form.field.list-fancy-select"                       multiple="true"                       default="id"                >                    <option value="id">id</option>                    <option value="title">title</option>                    <option value="alias">alias</option>                    <option value="introtext">introtext</option>                    <option value="fulltext">fulltext</option>                    <option value="state">state</option></field>
Но у нас поле с множественным выбором (атрибут multiple) и хотелось бы указать несколько значений по умолчанию...Оказывается, так можно сделать. Для этого в атрибуте default нужно указать json с нужными параметрами в виде {int}key : {string} value.Например, default='{"0":"id","1":"title"}'.
<field type="list"                       name="article_fields"                       label="article_fields"                       description="article_fields_desc"                       layout="joomla.form.field.list-fancy-select"                       multiple="true"                       default='{"0":"id","1":"title"}'                >                    <option value="id">id</option>                    <option value="title">title</option>                    <option value="alias">alias</option>                    <option value="introtext">introtext</option>                    <option value="fulltext">fulltext</option>                    <option value="state">state</option></field>
⚠️ Обратите внимание на кавычки! Поскольку json_decode не понимает одинарные кавычки собственно json нужно писать с двойными, а значение для атрибута default писать в одинарные.🙏 За подсказанное решение огромное спасибо участникам нашего сообщества - разработчикам Дмитрию Васюкову (@fictionlabs) и Игорю Бердичевскому (@septdir).@joomlafeed#joomla #разработка #webdev #development

0 Пользователей и 1 Гость просматривают эту тему.
  • 21 Ответов
  • 2477 Просмотров
*

principial

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Доброго времени суток.
Пробую допилить стандартный компонент JoomShopping. Стоит задача: каждому продавцу своя доставка (ну и оплата по аналогичному сценарию). Идея реализации: добавил в таблице vendors поля доставка и оплата.
В файле вывода редакции продавцов поля соответственно доставка и оплата, которые содержат просто значения. Я их получаю и могу заполнять. В поле доставка числовые значения через точку с запятой. Как связать эти числовые значения с таблицей доставка, чтобы вместо чисел выводилось соответствующее значение из таблицы доставка.
Когда-то давно еще на Joomla 1.6 правил файлы различных компонент. Сейчас что-то вообще не врубаюсь в логику работы. Где запрос к базе, как подключить к файлу редактирования продавцов таблицу с доставкой. Я так понимаю, запрос выполняет Joomla, а ей дают просто параметры.
В общем, буду очень благодарен если немного поясните это все.
Спасибо.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Каждому продавцу своя доставка
« Ответ #1 : 15.12.2013, 22:58:47 »
Код
$tShippingMethods = JTable::getInstance('ShippingMethod','jshop');
print_r($tShippingMethods->getAllShippingMethods());
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

principial

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Re: Каждому продавцу своя доставка
« Ответ #2 : 15.12.2013, 23:46:19 »
Спасибо, большое. Две строчки, а как помогли. Завтра продолжу курить код. Тему не закрывайте, может быть что еще спрошу.
*

principial

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Re: Каждому продавцу своя доставка
« Ответ #3 : 22.12.2013, 22:04:07 »
В общем за время многочасового ковыряния joomshoping пришел к такому решению. В корзине в зависимости от продавца выводятся варианты доставки и оплаты.
Код www\components\com_jshopping\templates\default\cart\cart.php
Код
	
<?php
<?php
defined('_JEXEC') or die();
$countprod = count($this->products);
/***********NEW***************/
$tShippingMethods = JTable::getInstance('ShippingMethod','jshop');
$ShippingMethodsarray = $tShippingMethods->getAllShippingMethods();
$tPaymentMethods = JTable::getInstance('PaymentMethod','jshop');
$PaymentMethodsarray = $tPaymentMethods->getAllPaymentMethods();
$tVendors = JTable::getInstance('Vendor','jshop');
$Vendorscount = $tVendors->getCountAllVendors();
$Vendorsarray = $tVendors->getAllVendors(true,0,$Vendorscount);
/***********NEW***************/
?>
<div class="jshop">
<form action="<?php print SEFLink('index.php?option=com_jshopping&controller=cart&task=refresh')?>" method="post" name="updateCart">
<?php print $this->_tmp_ext_html_cart_start?>
<?php if ($countprod>0){?>
<table class="jshop cart">
  <tr>
    <th width="20%">
      <?php print _JSHOP_IMAGE?>
    </th>
    <th>
      <?php print _JSHOP_ITEM?>
    </th>   
    <th width="15%">
      <?php print _JSHOP_SINGLEPRICE?>
    </th>
    <th width="15%">
      <?php print _JSHOP_NUMBER?>
    </th>
    <th width="15%">
      <?php print _JSHOP_PRICE_TOTAL?>
    </th>
    <th width="10%">
      <?php print _JSHOP_REMOVE?>
    </th>
  </tr>
  <?php
  $i=1;
/***********NEW***************/
  $asortprod = $this->products;
  $k=0;
  $first = 0;
  $vend_array = array(array());
  foreach ($asortprod as $key)
  {
  if ($first == 0)
  {
  $vend_array[$k]['id'] = $key['vendor_id'];
  $vend_array[$k]['sum'] = 0;
  $k++;
  $first = 1;
  }
  else
  {
$temp = 0;
  foreach ($vend_array as $v)
  {
  if (in_array($key['vendor_id'],$v))
  {
  $temp++;
  }
  }
  if ($temp == 0)
  {
  $vend_array[$k]['id'] = $key['vendor_id'];
  $vend_array[$k]['sum'] = 0;
  $k++;
  }
  }
  }
  foreach ($asortprod as $key)
  {
  $k=0;
  foreach ($vend_array as $v)
  {
  if ($key['vendor_id'] == $v['id'])
  {
  $vend_array[$k]['sum'] += $key['price']*$key['quantity'];
  }
  $k++;
  }
  }
/***********NEW***************/
  foreach($asortprod as $key_id=>$prod){
  ?>
  <tr class="jshop_prod_cart <?php if ($i%2==0) print "even"; else print "odd"?>">
    <td class="jshop_img_description_center">
      <a href="<?php print $prod['href']?>">
        <img src="<?php print $this->image_product_path ?>/<?php if ($prod['thumb_image']) print $prod['thumb_image']; else print $this->no_image; ?>" alt="<?php print htmlspecialchars($prod['product_name']);?>" class="jshop_img" />
      </a>
    </td>
    <td class="product_name">
        <a href="<?php print $prod['href']?>"><?php print $prod['product_name']?></a>
        <?php if ($this->config->show_product_code_in_cart){?>
        <span class="jshop_code_prod">(<?php print $prod['ean']?>)</span>
        <?php }?>
        <?php if ($prod['manufacturer']!=''){?>
        <div class="manufacturer"><?php print _JSHOP_MANUFACTURER?>: <span><?php print $prod['manufacturer']?></span></div>
        <?php }?>
        <?php print sprintAtributeInCart($prod['attributes_value']);?>
        <?php print sprintFreeAtributeInCart($prod['free_attributes_value']);?>
        <?php print sprintFreeExtraFiledsInCart($prod['extra_fields']);?>
        <?php print $prod['_ext_attribute_html']?>
    </td>
    <td>
        <?php print formatprice($prod['price'])?>
        <?php print $prod['_ext_price_html']?>
        <?php if ($this->config->show_tax_product_in_cart && $prod['tax']>0){?>
            <span class="taxinfo"><?php print productTaxInfo($prod['tax']);?></span>
        <?php }?>
        <?php if ($this->config->cart_basic_price_show && $prod['basicprice']>0){?>
            <div class="basic_price"><?php print _JSHOP_BASIC_PRICE?>: <span><?php print sprintBasicPrice($prod);?></span></div>
        <?php }?>
    </td>
    <td>
      <input type = "text" name = "quantity[<?php print $key_id ?>]" value = "<?php print $prod['quantity'] ?>" class = "inputbox" style = "width: 25px" />
      <?php print $prod['_qty_unit'];?>
      <span class = "cart_reload"><img style="cursor:pointer" src="<?php print $this->image_path ?>/images/reload.png" title="<?php print _JSHOP_UPDATE_CART ?>" alt = "<?php print _JSHOP_UPDATE_CART ?>" onclick="document.updateCart.submit();" /></span>
    </td>
    <td>
        <?php print formatprice($prod['price']*$prod['quantity']); ?>
        <?php print $prod['_ext_price_total_html']?>
        <?php if ($this->config->show_tax_product_in_cart && $prod['tax']>0){?>
            <span class="taxinfo"><?php print productTaxInfo($prod['tax']);?></span>
        <?php }?>
    </td>
    <td>
      <a href="<?php print $prod['href_delete']?>" onclick="return confirm('<?php print _JSHOP_CONFIRM_REMOVE?>')"><img src = "<?php print $this->image_path ?>images/remove.png" alt = "<?php print _JSHOP_DELETE?>" title = "<?php print _JSHOP_DELETE?>" /></a>
    </td>
  </tr>
  <?php
  $i++;
  }
  ?>
</table>
<!--NEW-->
<br />
 <table class="jshop cart">
  <tr>
    <th width = "15%">
    <?php print _JSHOP_VENDOR?>
    </th>
    <th width = "15%">
    <?php print _JSHOP_SHIPINGS_EACH?>
    </th>
    <th width = "15%">
    <?php print _JSHOP_PAYMENT_EACH?>
    </th>
    <th width="15%">
      <?php print _JSHOP_PRICE_TOTAL?>
    </th>
  </tr>
  <?php
  $i=1;
  foreach($vend_array as $v){
  ?>
  <tr class="jshop_prod_cart <?php if ($i%2==0) print "even"; else print "odd"?>">
    <td>
        <?php $oneVendorArr = $tVendors->getOneVendor(true, $v['id']);?>
        <?php print($oneVendorArr['company_name']);?>
    </td>
    <td>
<select>
<div><?php foreach (explode(";",$oneVendorArr['shipping']) as $shippingeach) { $tmp1 = $tShippingMethods->getOneShippingMethod(true, $shippingeach); echo "<option value='".$tmp1['name_ru-RU']."'>".$tmp1['name_ru-RU']."</option>"; }?></div>
</select>
    </td>
    <td>
<select>
<div><?php foreach (explode(";",$oneVendorArr['payment']) as $payeach) { $tmp2 = $tPaymentMethods->getOnePaymentMethod(true, $payeach); echo "<option value='".$tmp2['name_ru-RU']."'>".$tmp2['name_ru-RU']."</option>"; }?></div>
</select>
    </td>
    <td>
        <?php print $v['sum']; ?>
    </td>
  </tr>
  <?php
  $i++;
  }
  ?></table>
<!--NEW-->
 
  <?php if ($this->config->show_weight_order){?> 
    <div class="weightorder">
        <?php print _JSHOP_WEIGHT_PRODUCTS?>: <span><?php print formatweight($this->weight);?></span>
    </div>
  <?php }?> 

  <?php if ($this->config->summ_null_shipping>0){?>
    <div class="shippingfree">
        <?php printf(_JSHOP_FROM_PRICE_SHIPPING_FREE, formatprice($this->config->summ_null_shipping, null, 1));?>
    </div>
  <?php } ?>
 
  <div class="cartdescr"><?php print $this->cartdescr?></div>
  <br/>
<table class="jshop jshop_subtotal">
  <?php if (!$this->hide_subtotal){?>
  <tr>
    <td class="name">
      <?php print _JSHOP_SUBTOTAL ?>
    </td>
    <td class="value">
      <?php print formatprice($this->summ);?><?php print $this->_tmp_ext_subtotal?>
    </td>
  </tr>
  <?php } ?>
  <?php if ($this->discount > 0){ ?>
  <tr>
    <td class="name">
      <?php print _JSHOP_RABATT_VALUE ?>
    </td>
    <td class="value">
      <?php print formatprice(-$this->discount);?><?php print $this->_tmp_ext_discount?>
    </td>
  </tr>
  <?php } ?>
  <?php if (!$this->config->hide_tax){?>
  <?php foreach($this->tax_list as $percent=>$value){ ?>
  <tr>
    <td class = "name">
      <?php print displayTotalCartTaxName();?>
      <?php if ($this->show_percent_tax) print formattax($percent)."%"?>
    </td>
    <td class = "value">
      <?php print formatprice($value);?><?php print $this->_tmp_ext_tax[$percent]?>
    </td>
  </tr>
  <?php } ?>
  <?php } ?>
  <tr class="total">
    <td class = "name">
      <?php print _JSHOP_PRICE_TOTAL ?>
    </td>
    <td class = "value">
      <?php print formatprice($this->fullsumm)?><?php print $this->_tmp_ext_total?>
    </td>
  </tr>
  <?php if ($this->config->show_plus_shipping_in_product){?> 
  <tr>
    <td colspan="2" align="right">   
        <span class="plusshippinginfo"><?php print sprintf(_JSHOP_PLUS_SHIPPING, $this->shippinginfo);?></span> 
    </td>
  </tr>
  <?php }?>
  <?php if ($this->free_discount > 0){?> 
  <tr>
    <td colspan="2" align="right">   
        <span class="free_discount"><?php print _JSHOP_FREE_DISCOUNT;?>: <?php print formatprice($this->free_discount); ?></span> 
    </td>
  </tr>
  <?php }?> 
</table>
<?php }else{?>
<div class="cart_empty_text"><?php print _JSHOP_CART_EMPTY?></div>
<?php }?>

<table class="jshop" style="margin-top:10px">
  <tr id = "checkout">
    <td width = "50%" class = "td_1">
       <a href = "<?php print $this->href_shop ?>">
         <img src = "<?php print $this->image_path ?>/images/arrow_left.gif" alt="<?php print _JSHOP_BACK_TO_SHOP ?>" />
         <?php print _JSHOP_BACK_TO_SHOP ?>
       </a>
    </td>
    <td width = "50%" class = "td_2">
    <?php if ($countprod>0){?>
       <a href = "<?php print $this->href_checkout ?>">
         <?php print _JSHOP_CHECKOUT ?>
         <img src = "<?php print $this->image_path ?>/images/arrow_right.gif" alt="<?php print _JSHOP_CHECKOUT ?>" />
       </a>
    <?php }?>
    </td>
  </tr>
</table>
</form>

<?php print $this->_tmp_ext_html_before_discount?>
<?php if ($this->use_rabatt && $countprod>0){ ?>
<br /><br />
<form name="rabatt" method="post" action="<?php print SEFLink('index.php?option=com_jshopping&controller=cart&task=discountsave')?>">
<table class="jshop">
  <tr>
    <td>
      <?php print _JSHOP_RABATT ?>
      <input type = "text" class = "inputbox" name = "rabatt" value = "" />
      <input type = "submit" class = "button" value = "<?php print _JSHOP_RABATT_ACTIVE ?>" />
    </td>
  </tr>
</table>
</form>
<?php }?>
</div>
Новый код выделен    /***********NEW***************/ или <!--NEW-->

Теперь вопрос, куда передаются данные формы updateCart? Мне нужно оплату и доставку ипользовать из формы, и чтобы потом можно было в письмо вывести данные об оплате и доставке. Надеюсь понятно объяснил.
Другими словами как передать эти данные в файл www\components\com_jshopping\templates\default\cart\checkout.php, а дальше думаю будет легче.
Спасибо
*

principial

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Re: Каждому продавцу своя доставка
« Ответ #4 : 23.12.2013, 23:10:22 »
Кто-нибудь поможет? Хоть натолкните на мысль. Буду очень благодарен.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Каждому продавцу своя доставка
« Ответ #5 : 23.12.2013, 23:32:14 »
та как натолкнуть то, коли вы сами 2 слова из 100 сказали? например, какая логика если в корзине товары разных продавцов? да и вообще какая логика предполагается?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

principial

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Re: Каждому продавцу своя доставка
« Ответ #6 : 24.12.2013, 00:19:46 »
На странице корзина получаю таблицу с товарами как обычно. и дополнительную таблицу такого вида
 Продавец    Доставка     Оплата           Сумма
Продавец1   Укрпочта      На карту         600
Продавец2   Новаяпочта   Ощадбанк       100

Поля доставка и оплата могут меняться - это разворачивающийся список.

Когда нажимаю оформить заказ проходим этап подтверждения адреса и потом на страницу подтвердить заказ. Здесь уже только результаты формы - нельзя изменить количество товаров и прочее. Мне нужно на этой странице тоже получить мою таблицу в готовой форме, чтобы доставка и оплата были текстом, а не разворачивающимся списком. То есть из формы корзины updateCart получить данные о доставке и оплате, которые были выбраны. Где на этом этапе хранятся данные формы. Раньше я бы использовал $_GET или $_POST. А здесь, наверное передается через какой-то объект. Не могу понять как мне их достать. Если пойму как их в этот объект вставить и потом достать, то, думаю, смогу использовать их при формировании письма, которое отправляется пользователю с описанием способов оплаты и доставки и списка товаров.
Спасибо.
ПС: если что еще непонятно объяснил, напишите. А то я варюсь в этом и думаю, что остальные понимают меня с полуслова)
*

nevigen

  • Moderator
  • 10451
  • 863 / 25
  • http://n*****n.com
Re: Каждому продавцу своя доставка
« Ответ #7 : 24.12.2013, 10:06:28 »
я положил в корзину 3 товаров 3-х производителей.

перешел в корзину
нажал оформить заказ
у меня появилась форма выбора оплаты... 1 форма на весь заказ. не для каждого товара выбор оплаты, а 1 на весь заказ (1-й тугой момент)
следующий шаг доставка 1 страница с 1 выбором для всего заказа не для каждого товара (2-й тугой момент)
способ доставки привязывается к способу оплаты + страна... + еще будет привязка к продавцу... каждый со своей ценой которая должна будет суммироваться в общем итоге (3-й тугой момент)

Ну с точки зрения логики клиента...
ИМХО
я бы врядли заказал товары в магазине, забирать которые надо будет в разных частях города по разным тарифам и в разное время.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

principial

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Re: Каждому продавцу своя доставка
« Ответ #8 : 24.12.2013, 15:05:54 »
Спасибо за ответ. Я отключил шаги оплата и доставка, теперь заказ состоит из 2х шагов: адрес и подтверждение заказа, где мне и нужно вывести способы оплаты и доставки, которые были выбраны в корзине по продавцам. Суммы по продавцам у меня уже считает, здесь особых проблем не было. Планируется на данный момент работать по одной стране. Но, как говорит мой один знакомый, это все лирика. Вопрос был: через какой объект передаются данные формы, как туда добавить значение полей селектора доставка и оплата. Как потом эти данные получить.

ПС: если сможете подсказать, буду очень благодарен. очень прошу не нужно меня уговаривать в том, что я выбрал неверный путь и у меня ничего не получится. Просто помогите решить ТЗ.

Спасибо
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Каждому продавцу своя доставка
« Ответ #9 : 24.12.2013, 15:16:40 »
Цитировать
очень прошу не нужно меня уговаривать
путь неверный, но уговаривать никто и не собирался :) показали просто неувязки.

чтобы ваши данные где то хранились, их надо где то сохранять. ЖШ понятия не имеет о ваших новых полях, понимаете о чем я? как удобно вам, так и передавайте. GET, POST, SESSION, в базу пишите, в куках храните, и т.п. Что больше подходит, то и используйте.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

principial

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Re: Каждому продавцу своя доставка
« Ответ #10 : 24.12.2013, 15:25:49 »
Цитировать
ЖШ понятия не имеет о ваших новых полях, понимаете о чем я?
Вот я именно об этом. Как ему сообщить эти поля? Ведь все товары передаются полями формы? Или я не прав, а форма создается из объекта корзина... и ее данные просто выводятся на экран. Весь вопрос в том, что на этапе корзина я еще могу поменять количество товаров и ЖШ это запоминает, где? Если я это пойму, то туда по аналогии я сохраню свои данные. Мне сложно разобраться в этой связке модель-контроллер-вывод. Наверняка где-то это перед глазами. Я пока это не вижу.
Спасибо
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Каждому продавцу своя доставка
« Ответ #11 : 24.12.2013, 15:32:13 »
JshoppingControllerCart
function refresh()
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

principial

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Re: Каждому продавцу своя доставка
« Ответ #12 : 24.12.2013, 15:45:27 »
Спасибо, поковыряю. Я так понимаю работать нужно через function view() методом $view->assign('shipping', $shipping); или как-то так, нужно время это все проверить.
Еще раз спасибо.
*

principial

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Re: Каждому продавцу своя доставка
« Ответ #13 : 12.01.2014, 18:03:22 »
Прошу снова помощи. Разжуйте мне.
Будем о самом простом. В корзине есть форма updateCart. Пусть в ней я добавил одно текстовое поле sh_pr_method_id. Я хочу значение этого поля записать в поле сессии с именем sh_pr_method_id. Пробую работать через функцию load() файла модели.
Код
		
        $sh_pr_method_ids = JRequest::getVar('sh_pr_method_id');
        $session = JFactory::getSession();
        $session->set("sh_pr_method_id", $sh_pr_method_ids);
Если вручную задавать числовое значение - оно сохраняется в поле сессии. Но данные формы не могу получить. Т.е. JRequest::getVar('sh_pr_method_id') не срабатывает. Как же все таки получить эти значения. Я даже пробовал нагло $_POST['sh_pr_method_id'] - вообще никакой реакции. Просто в шоке и голова кругом. Подскажите как эти данные получать.
Спасибо.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Каждому продавцу своя доставка
« Ответ #14 : 12.01.2014, 20:30:37 »
Вам же подскзали
JshoppingControllerCart
function refresh()
Там и обрабатывайте новые данные. Далее - по цепочке.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

principial

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Re: Каждому продавцу своя доставка
« Ответ #15 : 12.01.2014, 20:48:14 »
В том то и дело если добавить в функцию refresh() JRequest::getVar('sh_pr_method_id'); я не получаю никаких данных. Как обратиться к значению поля sh_pr_method_id из формы в функции refresh()? Что не так с JRequest::getVar?
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Каждому продавцу своя доставка
« Ответ #16 : 12.01.2014, 21:02:55 »
Что не так с JRequest::getVar?
С ним все так. Проверяйте (var_dump, print_r) и не пишите сюда кусками, никто не поймет, что вы там делали.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

principial

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Re: Каждому продавцу своя доставка
« Ответ #17 : 12.01.2014, 21:37:52 »
Беда, в который раз убеждаюсь в бесполезности форумов( Задаю вроде вопросы, а получаю не пойми что... Как обратиться к значению поля sh_pr_method_id из формы в функции refresh()? вопрос без ответа... Зато на вопрос Что не так с JRequest::getVar? дан точный ответ в стиле программиста...
Не пишите кусками... Хорошо, еще раз. Работаем с 3-мя фалами
components\com_jshopping\templates\default\cart\cart.php
components\com_jshopping\models\cart.php
components\com_jshopping\controllers\cart.php

В файле components\com_jshopping\templates\default\cart\cart.php есть форма
Код
<form action="<?php print SEFLink('index.php?option=com_jshopping&controller=cart&task=refresh')?>" method="post" name="updateCart">
добавляем в форму поле
Код
<input type="text" name="sh_pr_method_id" value="2" />
идем в обработчик формы components\com_jshopping\controllers\cart.php функцию refresh() добавляем строку print_r(JRequest::getVar('sh_pr_method_id')); - реакции ноль
идем в components\com_jshopping\models\cart.php функцию load() добавляем строку print_r(JRequest::getVar('sh_pr_method_id')); - реакции ноль

Добавил в модель строчку
Код
class jshopCart{

var $sh_pr_method_id = 0;
Если бы я мог получить данные формы, то сделал бы так
Код
$this->sh_pr_method_id = JRequest::getVar('sh_pr_method_id');
если я делаю просто число
Код
$this->sh_pr_method_id = '8';
все работает, а данные формы я по прежнему не могу получить. Что мне еще дописать чтобы была понятна моя проблема?
Спасибо за ответы.
*

nevigen

  • Moderator
  • 10451
  • 863 / 25
  • http://n*****n.com
Re: Каждому продавцу своя доставка
« Ответ #18 : 12.01.2014, 22:24:24 »
Беда, в который раз убеждаюсь в бесполезности форумов....

я не кодер и не помогу, но знаю на 100500%, что такое начало просьбы,
 как правило приводит к тому результату который в нем описан.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Каждому продавцу своя доставка
« Ответ #19 : 12.01.2014, 22:25:25 »
Беда, в который раз убеждаюсь в бесполезности форумов( Задаю вроде вопросы, а получаю не пойми что... Как обратиться к значению поля sh_pr_method_id из формы в функции refresh()? вопрос без ответа... Зато на вопрос Что не так с JRequest::getVar? дан точный ответ в стиле программиста...
Успокойтесь, молодой человек. Ради интереса вставил в форму поле sh_pr_method_id и задал значение "6".
Смотрите, что я получил в массиве $_SESSION['cart']
Код: php-brief
O:9:"jshopCart":10:{s:9:"type_cart";s:4:"cart";s:8:"products";a:1:{i:0;a:19:{s:8:"quantity";i:1;s:10:"product_id";i:10;s:11:"category_id";s:5:"10004";s:5:"price";d:4800;s:3:"tax";N;s:6:"tax_id";s:1:"0";s:12:"product_name";s:16:"Сумка Azaro";s:11:"thumb_image";s:42:"thumb_285a883e985201084ebb250097618c3b.jpg";s:17:"delivery_times_id";s:1:"0";s:3:"ean";s:0:"";s:10:"attributes";s:6:"a:0:{}";s:16:"attributes_value";a:0:{}s:12:"extra_fields";a:0:{}s:6:"weight";s:6:"0.0000";s:9:"vendor_id";s:1:"1";s:5:"files";s:6:"a:0:{}";s:14:"freeattributes";s:6:"a:0:{}";s:19:"pid_check_qty_value";s:4:"P:10";s:15:"sh_pr_method_id";s:1:"6";}}s:13:"count_product";i:1;s:13:"price_product";d:4800;s:4:"summ";i:0;s:9:"rabatt_id";i:0;s:12:"rabatt_value";i:0;s:11:"rabatt_type";i:0;s:11:"rabatt_summ";d:0;s:20:"price_product_brutto";d:4800;}
идем в обработчик формы components\com_jshopping\controllers\cart.php функцию refresh() добавляем строку print_r(JRequest::getVar('sh_pr_method_id')); - реакции ноль
идем в components\com_jshopping\models\cart.php функцию load() добавляем строку print_r(JRequest::getVar('sh_pr_method_id')); - реакции ноль
Не удивительно, что вам не нравится ответ в стиле "программиста".
Не будь паразитом, сделай что-нибудь самостоятельно!
*

principial

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Re: Каждому продавцу своя доставка
« Ответ #20 : 12.01.2014, 23:04:06 »
Спасибо за ответ. Извините за грубый тон.
Поле вставляете в виде
Код
<input type="text" name="sh_pr_method_id" value="231" class = "inputbox" style = "width: 25px" />
в файл components\com_jshopping\templates\default\cart\cart.php, так? И здесь же делаете вывод print_r($_SESSION['cart']); Делаю то же самое в сессии значений не появляется...
Спасибо.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Каждому продавцу своя доставка
« Ответ #21 : 13.01.2014, 10:06:28 »
$_SESSION['cart']
Ну, тут я допустил неточность: должно быть $_SESSION['__default']['cart']. Я смотрел через Joomla $session
Код: php-brief
$session = JFactory::getSession();
$test = $session->get('cart');
print_r($test);
По существу, почему у вас новый параметр не выводится: он должен быть объявлен в JshoppingControllerCart::refresh(), далее обработан в jshopCart::refresh() и только после этого возвращен в JshoppingControllerCart::view().
Не будь паразитом, сделай что-нибудь самостоятельно!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

JoomShopping "Бесплатная доставка для заказов больше" + использование купонов

Автор xxvovan88xx

Ответов: 1
Просмотров: 1159
Последний ответ 18.05.2021, 15:23:00
от xxvovan88xx
Бесплатная доставка от суммы заказа

Автор misteri27

Ответов: 6
Просмотров: 2527
Последний ответ 24.07.2020, 11:46:02
от dron
JoomShopping доставка оплачивается отдельно

Автор dss

Ответов: 1
Просмотров: 553
Последний ответ 17.02.2020, 19:23:46
от nevigen
Изменить условие для ""Бесплатная доставка для заказов более... руб

Автор kik84

Ответов: 0
Просмотров: 730
Последний ответ 22.10.2019, 16:20:53
от kik84
При покупке на определённую сумму - доставка не ноль "0", а "Бесплатно"

Автор Anton shop

Ответов: 15
Просмотров: 2244
Последний ответ 01.09.2017, 12:08:44
от staskmp