Тема: Проблемы с капчей

Добрый вечер. Столкнулся со следующей проблемой.
Не отображается/не работает капча при покупке в 1 клик.

В шаблоне использую:

         {if !$is_auth && $use_captcha && ModuleManager::staticModuleEnabled('kaptcha')}
             <div class="row">
                 <div class="caption">
                     {t}Введите код, указанный на картинке{/t}
                 </div>
                 <div class="field">
                     <img height="42" width="100" src="{$router->getUrl('kaptcha', ['rand' => rand(1, 9999999)])}" alt=""/><br>
                     <input type="text" name="kaptcha" class="kaptcha">
                 </div>
             </div>
         {/if}

$use_captcha выдает значение 0. В настройках системы выставлена стандартная капча.

Менял настройки дефолтные настройки в контроллере oneclickcart.inc.php: 'use_captcha' => 1.
В таком случае, капча отображается как и положено, но она не срабатывает. Т.е. поле можно просто оставить пустым или ввести некорректные данные, а заказ уйдет (в ответ получаю success : true)

Также при нажатии настройка блока "Купить в один клик" в режиме дебага включение капчи не помогает. Значение не сохраняется.

Повысить оценку Понизить оценку

Re: Проблемы с капчей

Ну у нас отображение каптчи уже другое.

{if !$is_auth}
                    <div class="formLine captcha">
                        <label class="fieldName">{$click->__kaptcha->getTypeObject()->getFieldTitle()}</label>
                        {$click->getPropertyView('kaptcha')}
                    </div>
                   {/if}

Попробуйте эту конструкцию

3

Re: Проблемы с капчей

Исключение - "Call to a member function getTypeObject() on null".

$click что за объект?

Отображение капчи брал с одной из дефолтных тем.

Повысить оценку Понизить оценку

Re: Проблемы с капчей

А вы давно не обновлялись,  и что за тема оформления у Вас?

5

Re: Проблемы с капчей

Тема оформления своя. Создавал ориентируясь на "Классическую тему" (default). Код взял оттуда же.
Кхм, над проектом начал работу 16 дней назад.

Повысить оценку Понизить оценку

Re: Проблемы с капчей

В классической вот так:

{if !$is_auth}
                       <tr>
                           <td class="key">{$click->__kaptcha->getTypeObject()->getFieldTitle()}</td>
                           <td class="value">{$click->getPropertyView('kaptcha')}</td>
                       </tr>
                   {/if}

Какая версия модуля каптчи у Вас?

Re: Проблемы с капчей

Полный код купить в один клик oneclick.tpl

{assign var=catalog_config value=$this_controller->getModuleConfig()} 
<div class="oneClickWrapper">
    {if $success}
        <div class="reserveForm">
            <h2 class="dialogTitle" data-dialog-options='{ "width": "400" }'>{t}Заказ принят{/t}</h2>
            <p class="prodtitle">{$product.title} {t}Артикул:{/t}{$product.barcode}</p>
            <p class="infotext">
                {t}В ближайшее время с Вами свяжется наш менеджер.{/t}
            </p>
        </div>
    {else}
        <form enctype="multipart/form-data" class="reserveForm" action="{$router->getUrl('catalog-front-oneclick',["product_id"=>$product.id])}" method="POST"> 
            {$this_controller->myBlockIdInput()} 
            <input type="hidden" name="product_name" value="{$product.title}"/>
            <input type="hidden" name="offer_id" value="{$offer_fields.offer_id}">
            {hook name="catalog-oneclick:form" title="{t}Купить в один клик:форма{/t}"}  
            <h2 class="dialogTitle" data-dialog-options='{ "width": "400" }'>{t}Купить в один клик{/t}</h2>
            <p class="infotext">
                 {t}Оставьте Ваши данные и наш консультант с вами свяжется.{/t}
            </p>  
            {if $error_fields}
               <div class="pageError"> 
               {foreach from=$error_fields item=error_field}
                   {foreach from=$error_field item=error}
                        <p>{$error}</p>
                   {/foreach}
               {/foreach}
               </div>
            {/if}
           
            <table class="formTable tabFrame">
                {if $product->isMultiOffersUse()}
                    <tr>
                        <td class="key">{$product.offer_caption|default:t('Комплектация')}</td>
                        <td class="value">
                        </td>
                    </tr>
                    {assign var=offers_levels value=$product.multioffers.levels} 
                    {foreach $offers_levels as $level}
                        <tr>
                            <td class="key">{if $level.title}{$level.title}{else}{$level.prop_title}{/if}</td>
                            <td class="value">
                                <input name="multioffers[{$level.prop_id}]" value="{$offer_fields.multioffer[$level.prop_id]}" readonly>
                            </td>
                        </tr>
                    {/foreach}
                {elseif $product->isOffersUse()}
                    {assign var=offers value=$product.offers.items}
                    <tr>
                        <td class="key">{$product.offer_caption|default:t('Комплектация')}</td>
                        <td class="value">
                            <input name="offer" value="{$offer_fields.offer}" readonly>
                        </td>
                    </tr>
               {/if}
            </table>
               
            <table class="formTable tabFrame">
               <tbody>
                   <tr class="clickRow">
                        
                       <td class="key">
                          {t}Ваше имя{/t}
                       </td>
                       <td class="value">
                          <input type="text" class="inp {if $error_fields}has-error{/if}" value="{if $request->request('name','string')}{$request->request('name','string')}{else}{$click.user_fio}{/if}" maxlength="100" name="name">
                       </td>
                   </tr>
                   <tr class="clickRow">
                       <td class="key">
                          {t}Ваш телефон{/t}
                       </td> 
                       <td class="value">
                          <input type="text" class="inp {if $error_fields}has-error{/if}" value="{if $request->request('phone','string')}{$request->request('phone','string')}{else}{$click.user_phone}{/if}" maxlength="20" name="phone">
                       </td>
                   </tr>
                   
                   {foreach from=$oneclick_userfields->getStructure() item=fld}
                       <tr>
                           <td class="key">{$fld.title}</td>
                           <td class="value">
                               {$oneclick_userfields->getForm($fld.alias)}                   
                           </td>
                       </tr>
                   {/foreach}
                    
                   {if !$is_auth}
                       <tr>
                           <td class="key">{$click->__kaptcha->getTypeObject()->getFieldTitle()}</td>
                           <td class="value">{$click->getPropertyView('kaptcha')}</td>
                       </tr>
                   {/if}
                   
               </tbody>
            </table>
           
           <div class="centerWrap">
               <input type="submit" value="{t}Отправить{/t}" class="formSave">
               <span class="unobtainable">{t}Нет в наличии{/t}</span>
           </div>
           {/hook}
        </form>
    {/if}
</div>