ExtJS Пустое значение поля datefield

Есть поле с типом datefield:
{
					xtype        : 'datefield'
					,name        : 'date'
					,fieldLabel  : 'Date'
					,anchor      : '100%'
					,format      : MODx.config.manager_date_format
					,allowBlank  : true
					,emptyText   : null
				}
БД:
,'date' => array(
			'dbtype'   => 'date'
			,'phptype' => 'date'
			,'null'    => true
			,'default' => null
		)
Оно работает, т.е. сохраняет всё корректно.
Но есть одна проблема
Не получается сохранить пустое значение.
Т.е. если убрать (стереть, очистить) значение из поля, то оно (значение) не сохраняется, а остается прежним.
Как сохранять пустые значения?
П.С. мне нужно только выбор даты, без времени
Решено
Все оказалось гораздо проще. ExtJS отдает пустую строку, а не null
Соответственно нужно просто в процессоре написать:
public function beforeSet() {

		if(empty($this->getProperty('date'))){

			$this->setProperty('date', null);

		}


	}
Максим
03 августа 2020, 10:54
modx.pro
1 217
0

Комментарии: 7

Тодор
03 августа 2020, 17:02
0
А в самой базе это поле может быть пустым, галочка NULL там есть?
    Максим
    04 августа 2020, 08:48
    0
    да, галочка там есть.
    Но проблема в том, что this.gertValue() возвращает старое значение, а this.getRawValue() возвращает пустую строку, т.е. по сути верное значение.
    Видимо после каких-то преобразований (валидаций) ExtJS возвращается к старому значению. Но как поменять поведение я не знаю, не особо силен в JS и в ExtJS.
      Николай
      04 августа 2020, 09:25
      0
      Можно попробовать в документации посмотреть — docs.sencha.com/extjs/3.4.0/#!/api/Ext.form.DateField У данного компонента много параметров по умолчанию помимо указанных.
        Максим
        04 августа 2020, 10:50
        0
        Смотрел. Какие-то пробовал параметры и методы. Но не помогло ничего. Возможно не те параметры пробовал, возможно не так использовал. Поэтому прошу помочь.
          Тодор
          04 августа 2020, 12:23
          +1
          На днях делал такое же доп поле для товара, думал что у меня все норм работает. Но не, у меня такая же фигня, ежели уже заполнено поле очистить и сохранить, то после перезагрузки страницы отображается старое значение. Так что буду тоже искать решение даной проблеми
            Тодор
            04 августа 2020, 13:07
            0
            Не знаю на сколько тебе важно чтобы xtype был datefield, но я переделал на minishop2-xdatetime и у меня все уже заработало, с такими настройками:
            БД

            … troy.map.inc.php
            'date_tester' => NULL,
            ...
            'date_tester' => array (
                'dbtype' => 'int',
                'precision' => '20',
                'phptype' => 'datetime',
                'null' => false,
                'default' => 0,
            ),
            ....troy.js
            getFields: function(config) {
                return {
                    date_tester: {
                        xtype: 'minishop2-xdatetime',
                        value: config.record.date_tester,
                        description: '<b>[[+date_tester]]</b><br /> TEST DATE'
                    }
                }
            }
              Максим
              04 августа 2020, 14:47
              0
              На том сайте минишопа нет.
              Но надо посмотреть как там реализовано, спасибо.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      7