Автор Тема: Обязательное поле при регистрации сделать не обязательным  (Прочитано 3830 раз)

27 Апрель 2015, 09:08:49
  • Старожил
  • ****
  • Сообщений: 312
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Подскажите как обязательное поле при регистрации сделать не обязательным, а именно
убрать обязательность заполнения с полей
- Фамилия
- почтовый индекс

престашоп 1.6

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

Заранее большое спасибо!

Вот этот вариант не помогает:
Сделать поля в форме регистрации не обязательными:
В файле - /classes/Customer.php
Сделать поля в форме адреса не обязательными:
В файле — /classes/Address.php

public static $definition = array(
...

Заменить

'required' => trueна

'required' => false
Для индекса 'required' вообще отсутствует:
'postcode' => array('type' => self::TYPE_STRING, 'validate' => 'isPostCode', 'size' => 12),
27 Апрель 2015, 09:32:49
Ответ #1
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86543
  • Репутация: +25419/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Чтобы были не обязательные поля, нужно убрать проверку в классе, контроллере, шаблоне и javascript функциях.
В некоторых случаях нужно изменить тип поля в таблице.

Например, /classes/Address.php
'address1' => array('type' => self::TYPE_STRING, 'validate' => 'isAddress', 'required' => true, 'size' => 128),удлить
'required' => true,
В таблице address у этого поля установить значение по умолчанию и разрешить NULL.
ALTER TABLE `ps_address` CHANGE `address1` `address1` VARCHAR( 128 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ;
В шаблоне /themes/default-bootstrap/address.tpl
удалить
class="is_required validate form-control" data-validate="{$address_validation.$field_name.validate}"
В /themes/default-bootstrap/js/order-opc.js удалить проверку.

В админке в настройках адреса у страны и клиента не устанавливать обязательные поля.
27 Апрель 2015, 15:01:38
Ответ #2
  • Старожил
  • ****
  • Сообщений: 312
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
С индексом помогло справиться
AuthController.php и AddressController.php, закрыть:
/*elseif(empty($postcode) && $country->need_zip_code)*/
/*$this->errors[] = Tools::displayError('A Zip / Postal code is required.');*/

А вот с lastname...
Внес все выше изложенные предложения.
Однако если поле lastname указывать пустым. В базе перезапись не производится. Только если не пустое значение.
27 Апрель 2015, 15:57:50
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 942
  • Репутация: +10/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Можно если пустое поле, то в проверке в контроллере добавить какое-нибуть определение, NULL или "н/а".
28 Апрель 2015, 16:55:35
Ответ #4
  • Новичок
  • *
  • Сообщений: 14
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Проверку индекса можно было отключить даже проще - в настройках страны в админке.
В lastname еще можно попробовать поставить пробел, если значение пустое. Раньше работало.
18 Ноябрь 2015, 15:37:31
Ответ #5
  • Пользователь
  • **
  • Сообщений: 80
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Чтобы были не обязательные поля, нужно убрать проверку в классе, контроллере, шаблоне и javascript функциях.
В некоторых случаях нужно изменить тип поля в таблице.

Например, /classes/Address.php
'address1' => array('type' => self::TYPE_STRING, 'validate' => 'isAddress', 'required' => true, 'size' => 128),удлить
'required' => true,
В таблице address у этого поля установить значение по умолчанию и разрешить NULL.
ALTER TABLE `ps_address` CHANGE `address1` `address1` VARCHAR( 128 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ;
В шаблоне /themes/default-bootstrap/address.tpl
удалить
class="is_required validate form-control" data-validate="{$address_validation.$field_name.validate}"
В /themes/default-bootstrap/js/order-opc.js удалить проверку.

В админке в настройках адреса у страны и клиента не устанавливать обязательные поля.
А как в гостевой покупке убрать страну и регион? На форуме не нашел вразумительного ответа для prestashop 1.6.
18 Ноябрь 2015, 15:51:41
Ответ #6
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86543
  • Репутация: +25419/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Цитировать
А как в гостевой покупке убрать страну и регион?
Так же как и для авторизированного пользователя. Оба варианта используют одни и теже шаблоны.
22 Ноябрь 2015, 14:40:25
Ответ #7
  • Новичок
  • *
  • Сообщений: 8
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добрый день!
prestashop 1.6.1.1. Отредактировала создание учетной записи при оформлении заказа. Выдает ошибку: Вы должны указать хотя-бы один номер телефона.
Редактировала
order-opc-new-account.tpl
Address.php
Customer.php
Оставила поля:
Имя, Адрес, Мобильный телефон
Помогите, пожалуйста, новичку. Никак не могу понять, что нужно сделать, чтобы ошибка исчезла.
22 Ноябрь 2015, 15:14:19
Ответ #8
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86543
  • Репутация: +25419/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Включение / выключение  обязательных полей в админке:
Панель управления > Локализация > Страны > Редактирование > Страна > Формат адреса
Обязательные поля для адреса

Панель управления > Клиенты
Обязательные поля

Панель управления > Клиенты > Адреса
Обязательные поля

Как убрать обязательные поля в форме регистрации:
http://prestashop-forum.ru/index.php/topic,438.msg2506.html
http://prestashop-forum.ru/index.php/topic,4326.msg25195.html
http://prestashop-forum.ru/index.php/topic,438.msg2225.html

Для того чтобы добавить поля в форму заказа нужно:
1. Добавить поле в шаблон tpl
2. Добавить в это поле в таблицу
3. Доавить описание этого поля в класс
4. Добавить проверку в контроллер