Alors me re voila ^^ donc toujours le même souci je récupère bien toute les infos que je veut lors de l'édition / ajout d'un article hormis lorsque sa concerne les tags =_= ces fameux tags qui me tourmente.
Voici mon code auxquelles j'ai apporté quelque correction et amélioration de performance finis les requêtes inutiles (enfin j'espère que c'est propre) ^^
BlogController.php
// page index des posts me permettra de listé les articles dans un array et de décidé lequel supprimé modifier ou voir ajouté un nouvel article
public function xander_posts(){
$posts = $this->Blog->find('all', array('contain' => array('Category', 'Tag', 'Author'), 'order' => array('created' => 'desc')));
$this->set(compact('posts'));
}
// function add et edit des posts me sert a éditer ou ajouter des articles
public function xander_addeditposts($id = null){
// ici je récupére l'id de l'article voulus
if($id){
$postsid = $this->Blog->find('first', array(
'conditions' => array('Blog.id' => $id)
));
if(empty($postsid)){
$this->Session->setFlash("Impossible d'editer cet article", 'flash', array('class' => 'info'));
return $this->redirect(array('action' => 'posts'));
}
}
// Des données ont été postées
if(!empty($this->request->data)){
$this->request->data'Blog']'id'] = null;
if(isset($postsid)){
$this->request->data'Blog']'id'] = $postsid'Blog']'id'];
}
if($this->Blog->saveAll($this->request->data)){
$this->Session->setFlash("L'article a bien été ajouter/modifier", 'flash', array('class' => 'success'));
return $this->redirect(array('action' => 'posts'));
}
}else if($id){
$this->request->data = $postsid;
}
$posts = $this->Blog->find('all', array('conditions' => array('Blog.id' => $id), 'recursive' => 1));
$categories = $this->Blog->Category->find('list');
$tags = $this->Blog->Tag->find('list');
$authors = $this->Blog->Author->find('list');
$this->set(compact('posts', 'categories', 'tags', 'authors'));
}
Mon debug($posts); die(); qui me comfirme que je récupère toute les infos liés à l'article que je demande
Mon Model Blog.php
<?php
class Blog extends AppModel{
public $useTable = 'posts'; // me permet d'utilisé la table posts pour mes article
public $actsAs = array('Containable', 'Slug');
// création de l'url des posts (lire la suite)
public function afterFind($results, $primary = false){
foreach($results as $k => $result){
if(
isset($result'Blog']'id']) &&
isset($result'Blog']'slug'])
){
$results$k]'Blog']'url'] = array(
'controller' => 'blog',
'action' => 'view',
$result'Blog']'id']
);
}
}
return $results;
}
//function qui servira a faire les associations (ici belongsTo relation de type 1:N et hasMany relation de type N:1)
public $belongsTo = array(
'Author',
'Category' => array(
'counterCache' => true // counterCache me permet de compté combien d'article par categories
)
);
// function qui servira a faire l'associastion entre les tags et les articles (ici relation de type N:N conc j'utilise le hasAndBelongsToMany)
public $hasAndBelongsToMany = array('Tag');
public $hasMany = array('TagR');
}
?>
Ma fonction addeditposts.ctp + screen de se que sa me retourne
<section class="add">
<?= $this->Form->create('Blog'); ?>
<?= $this->Form->input('id'); ?>
<?= $this->Form->input('title', array('label' => 'Titre de l\'article')); ?><br>
<?= $this->Form->input('category_id', array('label' => 'Category')); ?><br>
<?= $this->Form->input('img', array('label' => 'Image')); ?><br>
<p>Image actuel : <br>
<?php
// je vérifie si un id existe en fesant un get de l'url si oui j'affiche l'image concerné par l'id sinon je n'affiche rien
if(isset($this->request->data'Blog']'id'])){
echo '<img class="imgpostsmin" src='.$this->request->data'Blog']'img'].' alt="" >';
}else{
echo 'aucune image';
}
?>
</p>
<br>
<?= $this->Form->input('content', array('label' => 'Content')); ?><br>
<?= $this->Form->input('slug', array('label' => 'Slug')); ?><br>
<?= $this->Form->select('tag_id', $tags, array('multiple' => 'checkbox')); ?><br>
<?= $this->Form->input('author_id', array('label' => 'Author')); ?><br>
<?= $this->Form->checkbox('onoff', array('label' => 'Online or Offline')); ?><br>
<?= $this->Form->end('Ajouter'); ?><br>
</section>
Voila merci pour votre aide d'avance