Ошибка при оформлении заказа на сайте Modx Evo Shopkeeper 1.3.6

Fatal error: Call to undefined function populateOrderData() in /........../assets/snippets/eform/eform.inc.php on line 414

Вот такая ошибка выскакивает при заполнении формы при оформлении заказа на сайте

пользуюсь сборкой Дмитрия на движке Modx Evo Shopkeeper 1.3.6

помогите! не пойму где ошибся

23 комментария

avatar
если вы читали документацию, то не могли пропустить строчку
&eFormOnBeforeMailSent=`populateOrderData`
в вызове eForm.
все телепаты, на выходных, может код вызова eForm покажете? или это секретная информация?
Комментарий отредактирован 2013-11-01 22:28:08 пользователем 64j
  • 64j
  • 0
avatar
[!eForm? &formid=`shopOrderForm` &tpl=`shopOrderForm` &report=`shopOrderReport` &vericode=`1` &ccsender=`1` &gotoid=`8` &subject=`Новый заказ` &eFormOnBeforeMailSent=`populateOrderData` &eFormOnMailSent=`sendOrderToManager` &noJQuery=`1`!]

вот так выводится моя форма, вроде бы все параметры прописаны, заполняю форму и нажимаю кнопку отправить, но получаю ошибку…
avatar
&noJQuery=`1` лишнее.
В папке с Shokeeper есть папка с документацией, называется docs — там все инструкции и примеры.
Пример вызова eForm здесь
assets/snippets/shopkeeper/docs/ru/rus_doc_module.html
Пример чанка shopOrderForm здесь, сравните со своим
assets/snippets/shopkeeper/chunks/ru/chunk_shopOrderForm.tpl
avatar
спасибо буду изучать
avatar
тут еще хочу пояснить, что пытаюсь обойти простую корзину и осуществляю покупку со страницы сразу в расширенную корзину, код корзины такой…
<div class="row" id="shopCart">
  <h1 class="tea-basket">Ваша корзина <span class="green">пуста!</span></h1>
  <div id="cartInner" class="empty">
    <div  id="cartEmpty" id="checkout-message"><h4>Вы не готовы оформить заказ?
 Позвоните или напишите нам, видимо у вас еще есть вопросы.</h4>
	
	
	</div> 
</div>
  [+plugin+]
</div>
<!--tpl_separator-->
<div class="row" id="shopCart">
<h1 class="tea-basket">Ваша корзина <small class="green">Удачных вам покупок!</small></h1>

<div id="cartInner" class="full">
   
    <form action="[+this_page_url+]#shopCart" method="post" id="cartform" class="clearfix">
<fieldset>
      <table class="items" style="width:100%;">
        
          [+inner+]
		  
    		  
<td class="cart_total"><strong>[+price_total+] [+currency+]</strong></td>
    
</tr> 
        </tbody>
        
        <tfoot>
          <tr class="bottom-summary" class="cart-order">
            <td class="first" colspan="3"></td>
            <td class="update-quantities"><input type="submit" id="update-cart" class="btn" name="shk_recount" value="Обновить" /></td>
			<td class="last"><a href="[+empty_url+]" id="butEmptyCart" title="Очистить корзину"   class="shk-del">Очистить</a></td>
            <td class="subtotal"><strong><span class='money'></span></strong></td>
            <td class="last"> </td>
          </tr>
        </tfoot>		  
		  </table>

      
      <div id="checkout-proceed" class="cart-order">
        <a href="[+order_page_url+]" id="butOrder" class="button">Оформить заказ</a>
      </div> 	
     
	  
    <div id="checkout-message"><h4>Готовы оформить заказ?</h4><p>Наша служба доставки с нетерпением ждет, Вашего решения, и готова сразу начать процес отправки заказа на Ваш адрес, просто нажмите кнопку - ОФОРМИТЬ ЗАКАЗ и вы для нас станете самым любимым покупателем)</p></div> 
   
	</fieldset>
    </form>   
    [+plugin+]
  </div>
</div>


где [+inner+]…

<thead class="centered-headings">
          <tr class="top-labels">
            <th class="first empty"> </th>
            <th><strong>Описание</strong></th>
            <th><strong>Цена  </strong></th>
            <th><strong>Количество</strong></th>
            <th><strong>Всего</strong></th>
            <th class="last empty"> </th>
          </tr>
        </thead>
	<tbody>		  
<tr class="item" class="cart-order">
	<td class="first"><img src="assets/templates/envo/css/img/3-for-2.png"  width="" class="product-image-checkout" alt="EnviroTabs" /></td>
    <td class="cart_description">[+name+]<p><span class="green">При покупке 3 пакетов, оплачиваете только 2</span></p></td>
    <td class="cart_unit"><span class='price'>[+price+] [+currency+]</span> </td>
	  <td  nowrap="nowrap"  class="cart_quantity"><input class="text" class="shk-count" type="text" size="1.5" name="count[]" maxlength="3" value="[+count+]"  title="изменить количество"/></td> 
avatar
Проще сделать редирект в форму заказа товара при добавлении товара в корзину, для этого в файле shopkeeper.inc.php строку 126
$modx->sendRedirect($_SERVER['HTTP_REFERER'],0,'REDIRECT_HEADER');

заменяете на
$modx->$modx->sendRedirect($modx->makeUrl($shkconf['orderFormPage'],'','','full'));
avatar
Можно и так сделать:

<script type="text/javascript">
			$.ajaxSetup({
			  async: false
			});
			function fillCartCallback(){
			  window.location.href=shkOptions.orderFormPage;
			}
	  </script>
avatar
Такая фича у меня так и не заработала, почему я так и не понял.
avatar
В чём именно не заработала?

Есть ещё такой момент, если товары находятся в папках, то нужно поменять одну строчку на:
window.location.href='[(site_url)]'+shkOptions.orderFormPage;
Комментарий отредактирован 2014-03-02 20:44:36 пользователем KennyOne
avatar
переход на orderForm не происходит.

Работает только так:
$modx->sendRedirect($modx->makeUrl($shkconf['orderFormPage'],'','','full'));
Комментарий отредактирован 2014-03-03 18:30:31 пользователем xrustit
avatar
я как раз искал такое решение спасибо большое!
avatar
$modx-> один лишний) а то я расстроился что не работает, потом увидел опечатку и теперь все ок, так сказать замена параметра goToOrderFormPage в Revo, альтернатива для Evo
avatar
шопкипером пользовался немного, но возможно eform вызывается раньше сниппета shopkeeper, поэтому eform и не видит этой функции
avatar
решил поместить на одной странице сразу два вызова — корзины и формы,

[!Shopkeeper? &cartType=`full` &cartTpl=`cartsTplbig` &priceTV=`price`  &orderFormPage=`7`  ¤cy=`руб.` &counterField=`1` &cartRowTpl=`cart_inner`!]

[!eForm? &formid=`shopOrderForm`  &orderFormPage=`7` &tpl=`shopOrderForm` &report=`shopOrderReport` &vericode=`1` &ccsender=`1` &gotoid=`8` &subject=`Новый заказ` &eFormOnBeforeMailSent=`populateOrderData` &eFormOnMailSent=`sendOrderToManager` !]
		


после чего ошибка исчезла, но теперь заполненные данные приходят в модуль в виде вот такой сборки....
a:23:{s:13:"addresG_class";s:9:"textfield";s:7:"addresG";s:8:"Belgorod";s:13:"addresI_class";s:9:"textfield";s:7:"addresI";s:0:"";s:13:"address_class";s:9:"textfield";s:7:"address";s:8:"lenina 1";s:10:"name_class";s:9:"textfield";s:4:"name";s:4:"Михаил";s:11:"email_class";s:9:"textfield";s:5:"email";s:17:"mmv2809@gmail.com";s:11:"phone_class";s:9:"textfield";s:5:"phone";s:11:"79511312304";s:13:"message_class";s:9:"textfield";s:14:"vericode_class";s:3:"ver";s:12:"submit_class";s:6:"button";s:9:"reportTpl";s:15:"shopOrderReport";s:8:"delivery";s:23:"Почта России";s:7:"payment";s:9:"robokassa";s:7:"message";s:0:"";s:8:"postdate";s:20:"02-
avatar
Помогите решить выше изложенную проблему с формой заказа, готов отблагодарить материально!!!
avatar
Дайте доступ к сайту в личку, так сложно сказать. Посмотрим что там у вас.
avatar
проблема не решена
avatar
Возвращаюсь к задаче описанной выше, так как данные отлично сохраняются в письме, то оставил проблему на потом, вот решил на досуге поискать решение и набрел на вот такой пост modx-shopkeeper.ru/forum/viewtopic.php?id=739, теперь стала задача как применить?
avatar
Вообщем совместными действиями задача была решена!!!
Особую благодарность выражаю Андрею (KennyOne), который реализовал задачу.
И так решение — если у вас при заказе в модуле появляется вот такая штука:

{s:10:«name_class»;s:9:«textfield»;s:4:«name»;s:31:«Сергей»;s:9:«org_class»;s:9:«textfield»;s:3:«org»;s:8:«НАТО»;s:11:«email_class»;s:9:«textfield»;s:5:«email»;s:21:«mail@gmail.com»;s:11:«phone_class»;s:9:«textfield»;s:5:«phone»;s:12:"+791234123";s:13:«details_class»;s:9:«textfield»;s:13:«message_class»;s:9:«textfield»;s:14:

Заходим в корень сайта и по пути
/ assets / snippets / shopkeeper / classes — папка
class.shopkeeper.php — файл
в нём ищем строчку — $short_txt = is_array($fields)? $this->modx->db->escape(serialize($fields)): '';
она там единственная и вставляем перед ней\
$fields['postdate'] = date («Y-m-d H:i:s»);

вот и все!
avatar
Спасибо исправил в сборке которая в репозитории

p.s. всегда проще написать что эта строка под номером 926 )
так легче искать
avatar
Отлично! Теперь все будет без заморочек)
avatar
В идеале подобные решения запуливать задачками сразу на гитхаб тогда это быстрее будет попадать в репозиторий:)

эту тему заметил случайно :)
avatar
Проблема була в Кешованій сторінці. Потрібно було просто прибратки Прапорець
http://prntscr.com/wh4zyw
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.