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.
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
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
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;
}
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.