Ver- / Entschlüsselung von Formularfeldern in CakePHP 3

Ich möchte einige Formularfelder verschlüsseln, wenn sie hinzugefügt / bearbeitet und entschlüsselt werden, wenn sie von cake nachgeschlagen werden. Hier ist der Code, der für mich in Version 2.7.2 funktioniert:

core.php

Configure::write('Security.key','secretkey');

app / model / patient.php.

public $encryptedFields = array('patient_surname', 'patient_first_name');

public function beforeSave($options = array()) {
    foreach($this->encryptedFields as $fieldName){
        if(!empty($this->data[$this->alias][$fieldName])){
            $this->data[$this->alias][$fieldName] = Security::encrypt(
                $this->data[$this->alias][$fieldName],
                Configure::read('Security.key')
            );
        }
    }
    return true;
}

public function afterFind($results, $primary = false) {

    foreach ($results as $key => $val) {
        foreach($this->encryptedFields as $fieldName) {
            if (@is_array($results[$key][$this->alias])) {
                $results[$key][$this->alias][$fieldName] = Security::decrypt(
                    $results[$key][$this->alias][$fieldName],
                    Configure::read('Security.key')
                );
            }
        }
    }
    return $results;
}

Wie ich es verstanden habe, muss ich $ this-> data [] durch die generierten Entitäten für das Modell und die afterFind-Methode durch virtuelle Felder ersetzen, aber ich kann einfach nicht alles zusammenfassen.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage