Cakephp 3 upload de fichiers

Par Assassins, il y a 11 ans


Bonjour,

J'ai voulu refaire le tutoriel http://www.grafikart.fr/tutoriels/cakephp/upload-file-431 sous cakephp3 mais dans le afterSave je n'ai pas accès a data avez-vous une solution ?

Merci d'avance.

4 réponses

JC_Pires, il y a 11 ans

Cake\ORM\Table::afterSave(Event $event, Entity $entity, ArrayObject $options)

debug les 3 paramètres dans ton AfterSave et n'oublie pas les use en début de fichier. Ton enregistrement sera dans $entity

Assassins, il y a 11 ans

Merci.
Autre problème après le
$image = $this->Images->patchEntity($image, $this->request->data);
je fais un debug($image)
je n'ai plus mon tableau dans img

\src\Model\Table\ImagesTable.php (line 73) object(Cake\Event\Event) { data => [ 'entity' => object(App\Model\Entity\Image) { 'new' => false, 'accessible' => [ 'competence_id' => true, 'projet_id' => true, 'nom' => true, 'img' => true, 'projet_competence' => true ], 'properties' => [ 'id' => (int) 1, 'competence_id' => null, 'projet_id' => (int) 3, 'nom' => 'test3', 'img' => '' ], 'dirty' => [], 'original' => [ 'img' => '1428691890.png' ], 'virtual' => [], 'errors' => [], 'repository' => 'Images' }, 'options' => object(ArrayObject) { atomic => true associated => [ 'competences' => [], 'projets' => [] ] checkRules => true checkExisting => true _primary => true } ] result => null [protected] _name => 'Model.afterSave' [protected] _subject => object(App\Model\Table\ImagesTable) { 'registryAlias' => 'Images', 'table' => 'images', 'alias' => 'Images', 'entityClass' => 'App\Model\Entity\Image', 'associations' => [ (int) 0 => 'competences', (int) 1 => 'projets' ], 'behaviors' => [], 'defaultConnection' => 'default', 'connectionName' => 'default' } [protected] _stopped => false }

la validation dans le fichier ImageTable:

public function validationDefault(Validator $validator) { $validator ->add('id', 'valid', ['rule' => 'numeric']) ->allowEmpty('id', 'create') ->requirePresence('nom', 'create') ->notEmpty('nom') ->add('img','file',[ 'rule' => ['mimeType', ['image/jpeg', 'image/png']] ]); return $validator; }
Xeta, il y a 11 ans

Hello,
J'ai fait un plugin pour Cake3 qui permet de gérer l'upload de fichier, tout est expliqué sur la doc du GitHub : https://github.com/Xety/Cake3-Upload

Assassins, il y a 11 ans

Merci pour ton plugin en même temps ça m'a permis de trouver l'erreur.

L'erreur venait du fait que le nom de mon input avait le même nom que le champ dans la base de données et comme il recevoir un tableau alors que dans la base de données il attend un textarea il doit supprimer le tableau par sécurité enfin je pense.