Как изменить значение поля которое создает timestampbehavior

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Arroyo
Сообщения: 105
Зарегистрирован: 2014.11.29, 11:24

Как изменить значение поля которое создает timestampbehavior

Сообщение Arroyo »

Здравствуйте. Подскажите, пожалуйста, как изменить значение поля которое создает timestampbehavior. Иногда мне нужно при создании поста выставить вручную будущую дату, а timestampbehavior, естественно, меняет на текущую.
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: Как изменить значение поля которое создает timestampbehavior

Сообщение vitalik1183 »

если дата заполнена пользователем - деактивируйте поведение через detachBehavior
Yii2!
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Как изменить значение поля которое создает timestampbehavior

Сообщение ElisDN »

Код: Выделить всё

[
    'class' => TimestampBehavior::className(),
    'value' => function (Event $event) {
        return $event->sender->created_at ?: time();
    },
    'attributes' => [
        ActiveRecord::EVENT_BEFORE_INSERT => 'created_at',
    ],
],
Arroyo
Сообщения: 105
Зарегистрирован: 2014.11.29, 11:24

Re: Как изменить значение поля которое создает timestampbehavior

Сообщение Arroyo »

ElisDN писал(а):

Код: Выделить всё

[
    'class' => TimestampBehavior::className(),
    'value' => function (Event $event) {
        return $event->sender->created_at ?: time();
    },
    'attributes' => [
        ActiveRecord::EVENT_BEFORE_INSERT => 'created_at',
    ],
], 
Все равно ставит текущую дату :(
Arroyo
Сообщения: 105
Зарегистрирован: 2014.11.29, 11:24

Re: Как изменить значение поля которое создает timestampbehavior

Сообщение Arroyo »

хотя этот вариант тоже не помог. Видимо я чтото не правильно делаю
Arroyo
Сообщения: 105
Зарегистрирован: 2014.11.29, 11:24

Re: Как изменить значение поля которое создает timestampbehavior

Сообщение Arroyo »

В rules нет. изменил строку для проверки так

Код: Выделить всё

return $event->sender->created_at ?:$event->sender->created_at; 
теперь в базу в любом случае записывается null (с заполненым полем и без) т.е. в $event->sender->created_at всегда NULL
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Как изменить значение поля которое создает timestampbehavior

Сообщение zelenin »

в rules должны быть атрибуты массово присваиваемые через load. Вы же так дату проставляете из формы редактирования? иначе всегда null или устанавливаемое напрямую значение.
Arroyo
Сообщения: 105
Зарегистрирован: 2014.11.29, 11:24

Re: Как изменить значение поля которое создает timestampbehavior

Сообщение Arroyo »

Заработало. Всем спасибо огромное. Про rules теперь буду знать.
Ответить