Bonjour,
Je veux intégrer le plugin media pour remplacer le système proposé dans le tuto "develloper un site avec cake php jour 2".
J'ai suivi les instructions et tout marche : le "content" avec tinymce a bien été intégré, les images se télécharge dans le dossier image...
Mon problème vient au moment de l'envoi du formulaire : le contenu n'est pas actualisé, le titre l'est ainsi que le slug mais pas le contenu
Je ne sais pas pourquoi, je poste mon admin_edit :
<?php echo $this->Form->create('Post'); ?>
<?php echo $this->Form->input('name',array('label'=>'Titre')); ?>
<?php echo $this->Form->input('slug',array('label'=>'URL')); ?>
<?php echo $this->Form->input('id'); ?>
<?php echo $this->Form->input('type',array('value'=>'page','type'=>'hidden')); ?>
<?php echo $this->Form->input('online',array('label'=>"En ligne ?")); ?>
<?php echo $this->Uploader->tinymce('content'); ?>
<?php echo $this->Form->end('Envoyer'); ?>
merci d'avance pour votre aide.
oui, voilà :
function admin_edit($id = null){
$this->helpers] = 'Media.Uploader';
if ($this->request->is('put') || $this->request->is('post')) {
if($this->Post->save($this->request->data)){
$this->Session->setFlash('La page a bien été modifiée','notif');
$this->redirect(array('action'=>'index'));
}
}elseif($id){
$this->Post->id = $id;
$this->request->data = $this->Post->read();
}
}
merci.
Salut , est ce qu'il modifie ton post ou est ce qu'il crée un nouveau post avec tes modifications, tout en gardant l'ancien.
Salut,
Il modifie le post mais que le titre et le slug, quand je tape des infos dans l'editeur tiny, et que j'ajoute une image il me met bien le lien et mon texte, mais quand j'envoie, le contenu n'est pas pris en compte : il garde le contenu qu'il y a dans ma bdd mais change le titre et le slug normalement.
montre moi ton model Post et ta fonction Show. Met aussi un setflash pour voir s'il te confirme que rien n'est modifié :
$this->Session->setFlash("Le contenu n'a pas été modifié","notif",array('type'=>'error'));
Voilà :
function show($id = null, $slug = null){
if(!$id)
throw new NotFoundException('Aucune page ne correspond à cette ID');
$page = $this->Post->find('first',array(
'conditions' => array('id' => $id)
));
if (empty($page))
throw new NotFoundException('Aucune page ne correspond à cette ID');
if ($slug != $page'Post']'slug'])
$this->redirect($page'Post']'link'],301);
$d'page'] = current($page);
$this->set($d);
}
et,
<?php
App::uses('AppModel', 'Model');
class Post extends AppModel{
public $actsAs = array('Containable','Media.Media');
public $validate = array(
'slug' => array(
'rule' => '/^[a-z0-9\-]+$/',
'allowEmpty' => true,
'message' => "L'url n'est pas valide"
),
'name' => array(
'rule' =>'notEmpty',
'message' =>"Vous devez préciser un titre"
)
);
public function afterFind($data){
foreach ($data as $k => $d) {
if (isset($d'Post']'slug']) && isset($d'Post']'id'])) {
$d'Post']'link'] = array(
'controller' => 'pages',
'action' => 'show',
'id' => $d'Post']'id'],
'slug' => $d'Post']'slug']
);
}
$data$k] = $d;
}
return($data);
}
public function beforeSave(){
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;
}
}
merci de ton aide, je m y repenche dessus..
salut, essaye avec ce code pour ta fonction show :
function show($id = null,$slug = null){
if(!$id || !is_numeric($id)){
throw new NotFoundException('Aucune article ne correspond à cet ID');
}
$post = $this->Post->find('first',array(
'conditions' => array('Post.id' => $id,'type'=>'page'),
'recursive' => 0,
));
if(empty($post)){
throw new NotFoundException('Aucune article ne correspond à cet ID');
}
if($slug != $post'Post']'slug']){
$this->redirect($post'Post']'link'],301);
}
$d'page'] = $page;
$this->set($d);
}
et dans ton model ajoute :
public $recursive = -1;
merci de tes réponses.
Alors j'ai testé, ca me met une erreur :
Undefined variable: page
Oui excuse moi, met à la place de $post -> $page
function show($id = null,$slug = null){
if(!$id || !is_numeric($id)){
throw new NotFoundException('Aucune article ne correspond à cet ID');
}
$page = $this->Post->find('first',array(
'conditions' => array('Post.id' => $id,'type'=>'page'),
'recursive' => 0,
));
if(empty($page)){
throw new NotFoundException('Aucune article ne correspond à cet ID');
}
if($slug != $page'Post']'slug']){
$this->redirect($page'Post']'link'],301);
}
$d'page'] = $page;
$this->set($d);
}