en mettant Media tout court ne change rien
J'ai un soucis pour récupérer tout les media associer a un article.
J'ai aucun soucis pour récupérer l'image a la une avec 'thumb' mes des que je veu faire comme expliquer dans le tutoriel qu'a la place de 'thumb' il faut mettre 'media'
<?= $this->Media->image($posts'Post']'media'], 200, 200,array('alt' => $posts'Post']'name'])); ?>
ses ce que je fais et sa me met cette erreur
Notice (8): Undefined index: media [APP\View\Posts\show.ctp, line 24]
Notice (8): Undefined index: extension [APP\Plugin\Media\View\Helper\MediaHelper.php, line 26]
Quand
Quelqu'un saurait comment récupérer tout les media associer a un article svp??
26 réponses
Bonjour debug déjà la variable $posts pour voir si tu as les medias dans cette variable là ..
j'ai la variable mes sa me retourne qu'un seul media le dernier uploader
et excuse moi bonjour ;)
tu peux poster le copie collé du debug stp ?
Merci de prendre le temp d'essayer de m'aidez
Voici le debug
array(
'Post' => array(
'id' => '26',
'name' => 'articles test2',
'slug' => 'articles-test2',
'content' => '',
'web' => '',
'type' => 'post',
'created' => '2013-07-05 21:09:00',
'online' => '1',
'video' => '',
'user_id' => '5',
'media_id' => '174',
'comment_count' => '1',
'thumb' => '/uploadsarticles/2013-07/SlyAvatar9.png',
'photo' => 'photos/1/26.jpg',
'thumbs' => 'photos/1/26_thumbs.jpg',
'url' => array(
'controller' => 'posts',
'action' => 'show',
'admin' => false,
(int) 0 => '26'
),
'link' => array(
'controller' => 'posts',
'action' => 'show',
'id' => '26',
'slug' => 'articles-test2'
)
),
'Thumb' => array(
'file' => '/uploadsarticles/2013-07/SlyAvatar9.png',
'type' => 'pic',
'icon' => '/uploadsarticles/2013-07/SlyAvatar9.png'
),
'Media' => array(
'' => array(
'file' => '/uploadsarticles/2013-07/SlyAvatar9.png',
'ref_id' => '26',
'type' => 'pic',
'icon' => '/uploadsarticles/2013-07/SlyAvatar9.png'
)
)
)
et tu as d'autres medias associés?
oui il y en as 3
tu peux faire voir le model Post et l'action du controller stp ?
Le model post
<?php
class Post extends AppModel{
public $actsAs = array(
'Media.Media' => array(
'extensions'=> array('jpg','png','jpeg','pdf','doc','docx','gif','zip','rar'),
'path' => '/uploadsarticles/%y-%m/%f'
)
);
public $hasMany = array('Comment','Media');
public $components = array('RequestHandler');
public $uses = array('Post');
public $validate = array(
'slug' => array(
'rule' => '/^[a-z0-9\-]+$/',
'allowEmpty' => true,
'message' => "L'url n'est pas valide"
),
'name' => array(
'rule' => array('between', 3, 26),
'message' => "Vous devez préciser un titre entre 3 et 26 caractére"
),
'src' => array(
'rule' => 'notEmpty',
'message' => "L'url de l'image a la une est vide"
)
);
public $order = 'Post.created DESC';
/**
* Permet de générer / récupérer un brouillon
**/
public function getDraft($type){
$posts = $this->find('first',array(
'conditions' => array('online' => -1,'type' => $type)
));
if(empty($posts)){
$this->save(array(
'type' => $type,
'online' => -1
),false);
$post = $this->read();
}
$posts'Post']'online'] = 0;
return $posts;
}
public function afterFind($results, $primary = false){
foreach($results as $k=>$result){
if(isset($result$this->alias]'id'])){
$results$k]$this->alias]'photo'] = 'photos/' . ceil($result$this->alias]'id']/1000) . '/' . $result$this->alias]'id'] . '.jpg';
$results$k]$this->alias]'thumbs'] = 'photos/' . ceil($result$this->alias]'id']/1000) . '/' . $result$this->alias]'id'] . '_thumbs.jpg';
$results$k]$this->alias]'url'] = array('controller' => 'posts', 'action' => 'show','admin' => false, $result$this->alias]'id']);
}
}
foreach ($results as $k => $result) {
if (isset($result'Post']'slug']) && isset($result'Post']'id']) && isset($result'Post']'type'])){
$result'Post']'link'] = array (
'controller' => Inflector::pluralize($result'Post']'type']),
'action' => 'show',
'id' => $result'Post']'id'],
'slug' => $result'Post']'slug']
);
}
$results$k]=$result;
}
return $results;
}
public function beforeSave($options = array()){
if(empty($this->data'Post']'slug']) && isset($this->data'Post']'slug']) && !empty($this->data'Post']'name']))
$this->data'Post']'slug'] = strtolower(Inflector::slug($this->data'Post']'name'],'-'));
return true;
}
}
Ma fonction show du Postscontroller
public function show($id = null,$slug = null){
$referer = $this->referer().'#commentForm';
$this->Post->contain('Thumb.file','Media.file');
$posts = $this->Post->findById($id);
if(empty($posts)){
throw new NotFoundException('Aucune page ne correspond à cet ID');
}
if(!empty($this->request->data)){
$this->request->data'Comment']'user_id'] = $this->Auth->user("id") ? $this->Auth->user("id") : 0;
$this->request->data'Comment']'post_id'] = $posts'Post']'id'];
$this->Post->Comment->create($this->request->data, true);
$fields = array('user_id', 'post_id', 'content');
if(!$this->Auth->user("id")){
$fields] = 'username';
$fields] = 'mail';
}
if($this->Post->Comment->save(null, true, $fields)){
$this->Session->setFlash('Merci pour votre commentaire', 'flash', array('class' => 'success'), 'commentForm');
$this->request->data = array();
return $this->redirect($referer);
}else{
$this->Session->setFlash('Impossible d\'envoyer votre commentaire, Merci de corriger vos champs', 'flash', array('class' => 'error'), 'commentForm');
}
}
$comments = $this->Post->Comment->find('all', array(
'conditions' => array('Comment.post_id' => $posts'Post']'id']),
'order' => array('created DESC'),
'contain' => array('User'),
'fields' => array('Comment.id', 'Comment.user_id', 'Comment.content','Comment.created','User.username','User.avatar','User.id','Comment.username','Comment.mail')
));
$this->set(compact('posts','comments'));
}
public $actsAs = array(
'Media.Media' => array(
'extensions'=> array('jpg','png','jpeg','pdf','doc','docx','gif','zip','rar'),
'path' => '/uploadsarticles/%y-%m/%f'
)
);
public $hasMany = array('Comment','Media');
Enleve Media dans $hasMany , ya peut être du telescopage dans les modeles du coup la..
j'ai rajouter Media pour voir si sa changer quelque chose, que je le mette ou l’enlève j'ai le même reultat
recopie colle le debug apres stp
$this->Post->contain('Thumb.file','Media.file');
essaye de mettre Media tout cours pour voir
j'ai enlever Media dans la relation hasmany et le debug et exactement le meme.
le voici
array(
'Post' => array(
'id' => '26',
'name' => 'articles test2',
'slug' => 'articles-test2',
'content' => '',
'web' => '',
'type' => 'post',
'created' => '2013-07-05 21:09:00',
'online' => '1',
'video' => '',
'user_id' => '5',
'media_id' => '174',
'comment_count' => '1',
'thumb' => '/uploadsarticles/2013-07/SlyAvatar9.png',
'photo' => 'photos/1/26.jpg',
'thumbs' => 'photos/1/26_thumbs.jpg',
'url' => array(
'controller' => 'posts',
'action' => 'show',
'admin' => false,
(int) 0 => '26'
),
'link' => array(
'controller' => 'posts',
'action' => 'show',
'id' => '26',
'slug' => 'articles-test2'
)
),
'Thumb' => array(
'file' => '/uploadsarticles/2013-07/SlyAvatar9.png',
'type' => 'pic',
'icon' => '/uploadsarticles/2013-07/SlyAvatar9.png'
),
'Media' => array(
'' => array(
'file' => '/uploadsarticles/2013-07/SlyAvatar9.png',
'ref_id' => '26',
'type' => 'pic',
'icon' => '/uploadsarticles/2013-07/SlyAvatar9.png'
)
)
)
oups excuse moi j'ai enlever le .file dans ma fonction index
ses bon j'ai tout les media associer
array(
'Post' => array(
'id' => '26',
'name' => 'articles test2',
'slug' => 'articles-test2',
'content' => '',
'web' => '',
'type' => 'post',
'created' => '2013-07-05 21:09:00',
'online' => '1',
'video' => '',
'user_id' => '5',
'media_id' => '174',
'comment_count' => '1',
'thumb' => '/uploadsarticles/2013-07/SlyAvatar9.png',
'photo' => 'photos/1/26.jpg',
'thumbs' => 'photos/1/26_thumbs.jpg',
'url' => array(
'controller' => 'posts',
'action' => 'show',
'admin' => false,
(int) 0 => '26'
),
'link' => array(
'controller' => 'posts',
'action' => 'show',
'id' => '26',
'slug' => 'articles-test2'
)
),
'Thumb' => array(
'file' => '/uploadsarticles/2013-07/SlyAvatar9.png',
'type' => 'pic',
'icon' => '/uploadsarticles/2013-07/SlyAvatar9.png'
),
'Media' => array(
(int) 171 => array(
'id' => '171',
'ref' => 'Post',
'ref_id' => '26',
'file' => '/uploadsarticles/2013-07/SlyAvatar2.png',
'position' => '2',
'extension' => 'png',
'name' => 'SlyAvatar2',
'type' => 'pic',
'icon' => '/uploadsarticles/2013-07/SlyAvatar2.png'
),
(int) 173 => array(
'id' => '173',
'ref' => 'Post',
'ref_id' => '26',
'file' => '/uploadsarticles/2013-07/SlyAvatar7.png',
'position' => '3',
'extension' => 'png',
'name' => 'SlyAvatar7',
'type' => 'pic',
'icon' => '/uploadsarticles/2013-07/SlyAvatar7.png'
),
(int) 174 => array(
'id' => '174',
'ref' => 'Post',
'ref_id' => '26',
'file' => '/uploadsarticles/2013-07/SlyAvatar9.png',
'position' => '4',
'extension' => 'png',
'name' => 'SlyAvatar9',
'type' => 'pic',
'icon' => '/uploadsarticles/2013-07/SlyAvatar9.png'
)
)
)
mes j'ai toujours l'erreur au lieu de m'afficher les images
Notice (8): Undefined index: media [APP\View\Posts\show.ctp, line 24]
Notice (8): Undefined index: extension [APP\Plugin\Media\View\Helper\MediaHelper.php, line 26]
ça c'est normal regarde ce que tu as ecris:
<?= $this->Media->image($posts'Post']'media'], 200, 200,array('alt' => $posts'Post']'name'])); ?>
compare avec le debug précédent...
Il va falloir faire une boucle pour faire ce que tu veux faire.
une boucle avec un foreach un peu comme sa?:
<?php foreach ($posts as $k => $v): ?>
<?= $this->Media->image($v'Post']'media'], 200, 200); ?>
<?php endforeach ?>
Je vois pas comment écrire le liens pour avoir tout les medias dans le tuto il es juste dit de mettre 'media' a la place de 'thumb'
Oué presque sauf que faut pas parcourir les posts mais les images donc
<?php foreach ($posts'Post']'Media'] as $k => $v): ?>
<?= $this->Media->image($v'file'], 200, 200); ?>
<?php endforeach ?>
sa me donne cette erreur
Notice (8): Undefined index: Media [APP\View\Posts\show.ctp, line 24]
Warning (2): Invalid argument supplied for foreach() [APP\View\Posts\show.ctp, line 24]
au temps pour moi, c'est ma faute....
<?php foreach ($posts'Media'] as $k => $v): ?>
<?= $this->Media->image($v'file'], 200, 200); ?>
<?php endforeach ?>
ah yes sa marche!! ba vraiment un grand merci de m'avoir aidez!, sa fait 2 jours que je bloque la dessus.
De rien, faut vraiment utiliser les debugs quand on est bloqué..on la structure de la variable , ça aide pour savoir comment accéder à tel ou tel élément.
oui ses sur mes étant encore débutant j'ai un peu de mal encore a coder, je me douter que s'etait un truc du genre mes j'arrivé pas a l'écrire en tout cas vraiment merci.