Salut à toutes et à tous!
C'est mon premier message sur le forum et je tiens à remercier Jonathan pour son travail formidable!
Ceci étant dit, Je me suis retrouvé confronté à un petit souci sur le tuto.
Ca se passe au moment au je désire modifier une page. Je clique sur éditer, je supprimer le slug et là il m'affiche le message d'erreur sur le champs "L'url n'est pas valide" au lieu de me rediriger vers la page admin index et me remplir le slug automatiquement.
En gros, le slug ne se remplit pas, s'il est vide, il me demande de le remplir.
Voici mes codes :
Model -> Post.php
<?php
class Post extends AppModel{
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;
}
}
Controller -> PagesController.php
<?php
class PagesController extends AppController {
public $uses = array('Post');
/**
* RequestAction, permet d'avoir la liste des contenus pour le menu
**/
function menu(){
$pages = $this->Post->find('all', array(
'conditions' => array('type' => 'page', 'online' => 1),
'fields' => array('id', 'slug', 'name')
));
return $pages;
}
/**
* RPermet d'afficher une page
**/
function show($id = null, $slug = null){
if(!$id){
throw new NotFoundException('Aucune page ne correspond à cet ID');
}
$page = $this->Post->find('first', array(
'conditions' => array('id' => $id)
));
if(empty($page)){
throw new NotFoundException('Aucune page ne correspond à cet ID');
}
if($slug != $page'Post']'slug']){
$this->redirect($page'Post']'link'],301);
}
$d'page'] = current($page);
$this->set($d);
}
/**
*
**/
function admin_index(){
//$this->paginate = array('Post' => array('limit' => 1));
$d'pages'] = $this->Paginate('Post', array('type' => 'page'));
$this->set($d);
}
function admin_edit($id = null){
if($this->request->is('put') || $this->request->is('post')){
if($this->Post->save($this->request->data)){
$this->Session->setFlash("Le contenu a bien été modifié", "notif");
$this->redirect(array('action' => 'index'));
}
}elseif($id){
$this->Post->id = $id;
$this->request->data = $this->Post->read();
}
}
function admin_delete($id){
$this->Session->setFlash('La page a bien été supprimé', 'notif');
$this->Post->delete($id);
$this->redirect($this->referer());
}
}
Voilà, je pense que le problème doit se situer dans un de ces 2 fichiers, sinon je n'ai aucune idée de l'endroit après y avoir planché un moment.
Merci d'avance pour votre aide! :)