Bonjour,

je découvre Cakephp 3... Et je voulais savoir comment ça se passe maintenant par rapport à la version 2. au niveau du "aftersave".
Dans la version précédente pour uploader l'avatar via le modèle ... il suffisait de faire :

dans la version 2 :

public function afterSave($created, $options = Array()){
    debug($this->data[$this->alias]['avatarf']);
    /*le code traitement*/
}

/*
Pour obtenir le résultat :

\app\Model\Blog.php (line 108)
array(
    'name' => 'img-site-profil.jpg',
    'type' => 'image/jpeg',
    'tmp_name' => 'C:\wamp\tmp\phpBB57.tmp',
    'error' => (int) 0,
    'size' => (int) 122285
)
*/

Ce que je veux

Seulement maintenant je sais pas comment on fait pour récupérer les données postées via le formulaire.

Questions :
1- comment fait-on pour récupérer les données postées via le formulaire ? (ex: $this->data[Model]['avatarf'] "cakephp2")
2- la méthode est-elle toujours bonne ? (c'est à dire de gérer ça, dans le "PostsTable comme dans la version 2)
ou le mieux est de gérer tout via le controller via l'appel à des fonctions...

Je fais :

public function afterSave(Event $event, Entity $entity ,ArrayObject $options){

    debug($entity);
    die();

}

Ce que j'obtiens

object(App\Model\Entity\Post) {

'name' => 'le news mane',
'content' => '',
'category_id' => (int) 1,
'slug' => 'le-news-mane',
'type' => 'blog',
'user_id' => '1',
'created' => '2019-12-28 02:06:01',
'modified' => '2019-12-28 02:06:01',
'online' => '0',
'[new]' => true,
'[accessible]' => [
    'category_id' => true,
    'name' => true,
    'slug' => true,
    'content' => true,
    'created' => true,
    'modified' => true,
    'online' => true,
    'category' => true,
    'avatar' => true
],
'[dirty]' => [
    'name' => true,
    'content' => true,
    'category_id' => true,
    'slug' => true,
    'type' => true,
    'user_id' => true,
    'created' => true,
    'modified' => true,
    'online' => true
],
'[original]' => [],
'[virtual]' => [],
'[hasErrors]' => false,
'[errors]' => [],
'[invalid]' => [],
'[repository]' => 'Posts'

}

mais ce n'est pas les données du formulaire ... ?

Merci d'avance

3 réponses


Kareylo
Réponse acceptée

Fait le dans ton controller une fois que tes données sont sauvegardées

Tu devrais l'avoir dans $this->request->data['avartarf']

Plus d'info dans la doc des formulaires : Form - Creating File Inputs

Si je fait $this->request->data['avartarf'] . J'ai cette erreur la :
Undefined property request. You have not defined the request association on App\Model\Table\PostsTable.