Как зарегистрироваться после Marshal в CakePHP 4.1

Я заметил, что в 4.1 появилось новое событие afterMarshal.

Куда положить? В настольной модели? И как?

Я хочу работать с результатами каждый раз, когда он загружается.

Спасибо за помощь


person M.U.    schedule 29.09.2020    source источник
comment
Каждый раз что загружается? Вы имеете в виду каждый раз, когда вы читаете запись из базы данных? afterMarshal не для этого. Как правило, любую дополнительную работу, которую люди должны выполнять над загружаемыми сущностями, лучше всего выполнять путем добавления средств доступа.   -  person Greg Schmidt    schedule 29.09.2020
comment
Или book.cakephp.org/4 /en/форма/   -  person mark    schedule 29.09.2020


Ответы (1)


Для шифрования и дешифрования через модель в CAKEPHP 4

public $encryptedFields = ['first_name','last_name'];


 public function beforeSave($event,  $entity,  $options)
{
    foreach($this->encryptedFields as $fieldName)
    {            if($entity->has($fieldName))
        {         $entity->set($fieldName, encodeBeforeSave($entity->get($fieldName)));}
    }        return true;
}

public function beforeFind( $event,  $query,  $options)
{        $query->formatResults(
        function ($results)
        {                return $results->map(function ($row){
                foreach($this->encryptedFields as $fieldName) 
                {
                    if(isset($row[$fieldName]) && !empty($row[$fieldName]) ) 
                    {
                        $row[$fieldName] = decodeBeforefind($row[$fieldName]);
                    }
                }
                return $row;
            });
        }
    );  
}
person Love Kumar    schedule 09.12.2020