Автор Тема: Изменить переменную static  (Прочитано 39 раз)

17 Июль 2017, 12:54:14
  • Фрилансер
  • *
  • Сообщений: 164
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Здравствуйте
Добавил свое поле my_name в таблицу customer.
Прописал её в классе Customer
    public static $definition = array(
        'table' => 'customer',
        'primary' => 'id_customer',
        'fields' => array(
            'secure_key' =>                array('type' => self::TYPE_STRING, 'validate' => 'isMd5', 'copy_post' => false),
            'lastname' =>                    array('type' => self::TYPE_STRING, 'validate' => 'isName', 'required' => true, 'size' => 32),
            'firstname' =>                    array('type' => self::TYPE_STRING, 'validate' => 'isName', 'required' => true, 'size' => 32),
            'my_name' =>                    array('type' => self::TYPE_STRING, 'validate' => 'isString', 'required' => true, 'size' => 32),
Возникла необходимость, чтобы атрибут 'required' => true присваивался/не присваивался в зависимости от значения переменной из конфигурации:
Configuration::get('PS_MY_NAME_CONFIG')
Попытка присвоения другого значения  $definition (со строкой без 'required' => true)
'my_name' =>                    array('type' => self::TYPE_STRING, 'validate' => 'isString', 'size' => 32), в конструкторе не дает результата. Как быть?
17 Июль 2017, 12:58:31
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 3066
  • Репутация: +72/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Проверку заполнени поля можно вынести в javascript, проверять в шаблонах в зависимости от настроек. В таблице поставить не обязательное заполнение.
17 Июль 2017, 13:01:10
Ответ #2
  • Фрилансер
  • *
  • Сообщений: 164
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Этот путь я предвидел, хотел попробовать обойтись "малой кровью" :)
17 Июль 2017, 13:07:36
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 3066
  • Репутация: +72/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Тогда в класс validate добавить свою функцию проверки,
if(Configuration::get('PS_MY_NAME_CONFIG'))
    // проверять
else
    // не проверять
17 Июль 2017, 13:09:09
Ответ #4
  • Фрилансер
  • *
  • Сообщений: 164
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо, сегодня попробую
17 Июль 2017, 14:45:57
Ответ #5
  • Фрилансер
  • *
  • Сообщений: 164
  • Репутация: +2/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Помогло, только проверка на required происходит не в Validate, а в ObjectModel.php
Спасибо за идею!
+