Обязательные поля, гостевая покупка, prestashop 1.5

Автор Esmeralda773, 12 марта 2013, 20:32:47

« назад - далее »

bodich

#30
Я сделал так, как написано в качестве решения, типа после процедуры замены 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 если что)

Виталий

Например, можно в классе добавить
'required' => false
к переменной, которую хотите спрятать
Так в файле /classe/Addresse.php
'company' => array('type' => self::TYPE_STRING, 'validate' => 'isGenericName', 'required' => false),
Cоздание интернет сайтов Webstudio UwK

bodich

#32
И так я пробовал. Я даже спрятать не успеваю. Единственное изменение замена visible на hidden (хоть 'required' => false хоть true). И Страна не может быть загружена с address->id_country...

Виталий

<input type="hidden" name="id_country" value="ид страны по умолчанию" />
Cоздание интернет сайтов Webstudio UwK

bodich

#34
У меня Было:

        <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, я тоже пробовал.

bodich

Еще раз заново все проделал, в 5й раз, наконец заработало!!! Спасибо всем за помощь и отзывчивость)

tigran

Вам же написали как делать
<input type="hidden"
А вы все равно продлолжаете свое.
<select style="display:none;"
Межу эти вариантами большая разница. В первом поле видимое для скриптов. В вашем, это поле скрипт не видит.
Если хоите делать по своему, тогда все значения определяйте в контроллере и js файле.

bodich

#37
Но с тегом select у меня не работало type="hidden"... У него нет такого атрибута.

tigran

У тега select нет атрибута type. Справку по html тегам смотрите. Поэтому и не работало. Поэтому и добавляют скрытый input, в нем определяют значение для переменной


bodich

#39
Вот я и смотрел, думал вы обсуждаете старую версию prestashop, в которой страна вводилась в input. А оказалось, что select нужно заменить на input. Сразу я сам не допер, может это подразумевалось, но не подумал об этом...

bodich

#40
Но теперь проблема со state, страну заменил с select на input. Выбор региона пропал совсем... С ним теперь input не прокатывает...

tigran

С регионами это способ не прокатит. Там js выводит список после определения страны.

bodich

#42
То есть кроме правки 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())+'&';
     });


Может кому-то тоже пригодится.

bodich

Подскажите, в каких файлах исправлять отображение полей блоков адреса
1. во время регистрации
2. регистрации при заказе
3. многостраничном заказе...

Пробовал вносить изменения уже во все файлы .tpl с вхождением нужных переменных.

tigran

Отображение - внешний вид? Это в стилях.