Автор Тема: Обязательные поля, гостевая покупка, prestashop 1.5  (Прочитано 34925 раз)

09 Октябрь 2014, 22:24:59
Ответ #30
  • Новичок
  • *
  • Сообщений: 28
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Я сделал так, как написано в качестве решения, типа после процедуры замены visible на hidden
Поля прятать можно. Всего-то надо было подправить строчки
Код: [Выделить]
$('#opc_account_form input:visible').each(function() {

$('#opc_account_form select:visible').each(function() {
в файле order-opc.js.
можно начинать прятать поля...

Но после этого даже при не спрятанных полях выдает сразу все ошибки, мэйл не заполнен, страна не подгружается, имя и тд. При том, что это все заполнено.
Если вернуть в order-opc.js обратно на visible, то все начинает работать с видимыми полями.
Так что я так и не понял, как все-таки нормально скрыть поля((( (prestashop 1.6 если что)
10 Октябрь 2014, 12:49:49
Ответ #31
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 105673
  • Репутация: +39553/-0
    • Просмотр профиля
    • Webstudio UwK
Например, можно в классе добавить
'required' => falseк переменной, которую хотите спрятать
Так в файле /classe/Addresse.php
'company' => array('type' => self::TYPE_STRING, 'validate' => 'isGenericName', 'required' => false),
Cоздание интернет сайтов Webstudio UwK
10 Октябрь 2014, 12:58:40
Ответ #32
  • Новичок
  • *
  • Сообщений: 28
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
И так я пробовал. Я даже спрятать не успеваю. Единственное изменение замена visible на hidden (хоть 'required' => false хоть true). И Страна не может быть загружена с address->id_country...
10 Октябрь 2014, 13:00:39
Ответ #33
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 105673
  • Репутация: +39553/-0
    • Просмотр профиля
    • Webstudio UwK
<input type="hidden" name="id_country" value="ид страны по умолчанию" />
Cоздание интернет сайтов Webstudio UwK
10 Октябрь 2014, 13:03:14
Ответ #34
  • Новичок
  • *
  • Сообщений: 28
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
У меня Было:
        <select name="id_country" id="id_country" class="form-control">
{foreach from=$countries item=v}
<option value="{$v.id_country}"{if (isset($guestInformations) && isset($guestInformations.id_country) && $guestInformations.id_country == $v.id_country) || (!isset($guestInformations) && $sl_country == $v.id_country)} selected="selected"{/if}>{$v.name|escape:'html':'UTF-8'}</option>
{/foreach}
</select>

Я изменял так:
<select style="display:none;" name="id_country" id="id_country" class="form-control">
        <option value="216" selected="selected">Украина</option>
/*{foreach from=$countries item=v}
<option value="{$v.id_country}"{if (isset($guestInformations) && isset($guestInformations.id_country) && $guestInformations.id_country == $v.id_country) || (!isset($guestInformations) && $sl_country == $v.id_country)} selected="selected"{/if}>{$v.name|escape:'html':'UTF-8'}</option>
{/foreach}*/
</select>

То есть делать комбинацию, когда везде изменения, и в js файле и в tpl, я тоже пробовал.
10 Октябрь 2014, 13:21:51
Ответ #35
  • Новичок
  • *
  • Сообщений: 28
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Еще раз заново все проделал, в 5й раз, наконец заработало!!! Спасибо всем за помощь и отзывчивость)
10 Октябрь 2014, 13:24:12
Ответ #36
  • Ветеран
  • *****
  • Сообщений: 1285
  • Репутация: +13/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Вам же написали как делать
<input type="hidden"А вы все равно продлолжаете свое.
<select style="display:none;" Межу эти вариантами большая разница. В первом поле видимое для скриптов. В вашем, это поле скрипт не видит.
Если хоите делать по своему, тогда все значения определяйте в контроллере и js файле.
10 Октябрь 2014, 13:26:50
Ответ #37
  • Новичок
  • *
  • Сообщений: 28
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Но с тегом select у меня не работало type="hidden"... У него нет такого атрибута.
10 Октябрь 2014, 13:34:49
Ответ #38
  • Ветеран
  • *****
  • Сообщений: 1285
  • Репутация: +13/-1
  • Сообщество PrestaShop
    • Просмотр профиля
У тега select нет атрибута type. Справку по html тегам смотрите. Поэтому и не работало. Поэтому и добавляют скрытый input, в нем определяют значение для переменной

10 Октябрь 2014, 13:37:49
Ответ #39
  • Новичок
  • *
  • Сообщений: 28
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Вот я и смотрел, думал вы обсуждаете старую версию prestashop, в которой страна вводилась в input. А оказалось, что select нужно заменить на input. Сразу я сам не допер, может это подразумевалось, но не подумал об этом...
10 Октябрь 2014, 13:47:28
Ответ #40
  • Новичок
  • *
  • Сообщений: 28
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Но теперь проблема со state, страну заменил с select на input. Выбор региона пропал совсем... С ним теперь input не прокатывает...
10 Октябрь 2014, 13:49:45
Ответ #41
  • Ветеран
  • *****
  • Сообщений: 1285
  • Репутация: +13/-1
  • Сообщество PrestaShop
    • Просмотр профиля
С регионами это способ не прокатит. Там js выводит список после определения страны.
10 Октябрь 2014, 13:52:12
Ответ #42
  • Новичок
  • *
  • Сообщений: 28
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
То есть кроме правки order-opc.js вариантов нет... и делать style="display:none;".  Регион ведь тоже надо убрать.

PS: чтобы заработало пришлось не заменить visible на hidden
     $('#opc_account_form select:visible').each(function() {
     params += encodeURIComponent($(this).attr('name'))+'='+encodeURIComponent($(this).val())+'&';
     });

А добавить еще один вызов для hidden, чтобы обрабатывались все.

     $('#opc_account_form select:visible').each(function() {
     params += encodeURIComponent($(this).attr('name'))+'='+encodeURIComponent($(this).val())+'&';
     });
     $('#opc_account_form select:hidden').each(function() {
     params += encodeURIComponent($(this).attr('name'))+'='+encodeURIComponent($(this).val())+'&';
     });

Может кому-то тоже пригодится.
11 Октябрь 2014, 16:07:44
Ответ #43
  • Новичок
  • *
  • Сообщений: 28
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Подскажите, в каких файлах исправлять отображение полей блоков адреса
1. во время регистрации
2. регистрации при заказе
3. многостраничном заказе...

Пробовал вносить изменения уже во все файлы .tpl с вхождением нужных переменных.
11 Октябрь 2014, 16:25:23
Ответ #44
  • Ветеран
  • *****
  • Сообщений: 1285
  • Репутация: +13/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Отображение - внешний вид? Это в стилях.