Я заметил, что в 4.1 появилось новое событие afterMarshal.
Куда положить? В настольной модели? И как?
Я хочу работать с результатами каждый раз, когда он загружается.
Спасибо за помощь
Я заметил, что в 4.1 появилось новое событие afterMarshal.
Куда положить? В настольной модели? И как?
Я хочу работать с результатами каждый раз, когда он загружается.
Спасибо за помощь
Для шифрования и дешифрования через модель в 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;
});
}
);
}
afterMarshal
не для этого. Как правило, любую дополнительную работу, которую люди должны выполнять над загружаемыми сущностями, лучше всего выполнять путем добавления средств доступа. - person Greg Schmidt   schedule 29.09.2020