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??
au temps pour moi, c'est ma faute....
<?php foreach ($posts'Media'] as $k => $v): ?>
<?= $this->Media->image($v'file'], 200, 200); ?>
<?php endforeach ?>
Bonjour debug déjà la variable $posts pour voir si tu as les medias dans cette variable là ..
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'
)
)
)
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
$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...
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]
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.