Développer un site - Jour 5

59970
,

Bonjour ou bonsoir,
Voila je rencontre un petit problème avec mon code.
je n'arrive pas a edit des articles qui se trouve en basse de donne
les champs de mon formulaire son vide

Décrivez ici votre code ou ce que vous cherchez à faire
admin_edit.php

<div class="page-header">
    <h1>Editer un article</h1>
</div>
<form action="<?php echo Router::url('admin/posts/edit');?>" method="post">
    <?php echo $this->Form->input('name','Titre'); ?>
    <?php echo $this->Form->input('slug','Url'); ?>
    <?php echo $this->Form->input('id','hidden'); ?>
    <?php echo $this->Form->input('content','Contenu',array('type'=>'textarea','class'=>'xxlarge','rows'=>8)); ?>
    <?php echo $this->Form->input('online','En ligne',array('type'=>'checkbox'));?>
    <div class="actions">
        <input type="submit" class="btn primary" value="Envoyer">
    </div>
</form>

PostsController.php

<?php 
class PostsController extends Controller{

    function index(){
        $perPage = 10;
        $this->loadModel('Post');
        $condition = array('online' => 1,'type'=>'post');
        $d['posts'] = $this->Post->find(array(
            'conditions' => $condition,
            'limit' => ($perPage*($this->request->page-1)).','.$perPage
        ));
        $d['total'] = $this->Post->findCount($condition);
        $d['page'] = ceil($d['total'] / $perPage);
        $this->set($d);
    }


    function view($id,$slug){

        $this->loadModel('Post');
        $d['post'] = $this->Post->findFirst(array(
            'fields'     => 'id,slug,content,name',
            'conditions' => array('online' => 1,'id'=>$id,'type'=>'post')
        ));
        if(empty($d['post'])){
            $this->e404('Page introuvable');
        }
        if($slug != $d['post']->slug){
            $this->redirect("posts/view/id:$id/slug:".$d['post']->slug,301);
        }
        $this->set($d); 
    }
    function admin_index(){
        $perPage = 10;
        $this->loadModel('Post');
        $condition = array('type'=>'post');
        $d['posts'] = $this->Post->find(array(
            'fields' => 'id,name,online',
            'conditions' => $condition,
            'limit' => ($perPage*($this->request->page-1)).','.$perPage
        ));
        $d['total'] = $this->Post->findCount($condition);
        $d['page'] = ceil($d['total'] / $perPage);
        $this->set($d);
    }

    function admin_edit($id = null){
        $this->loadModel('Post');
        if($this->request->data){

            $this->Post->save($this->request->data);
            $this->Session->setFlash('Le contenu a bien été modifié');
            $id = $this->Post->id;
        }
        if($id){
            $this->request->data = $this->Post->findFirst(array(
                'conditions' => array('id'=>$id)
            ));
            #$d['id'] = $id;
        }
        #$this->set($d);    
    }

    function admin_delete($id){
        $this->loadModel('Post');
        $this->Post->delete($id);
        $this->Session->setFlash('Le contenu a bien été suprimé');
        $this->redirect('admin/posts/index');
    }
}
?>

Ce que je veux

edite les articles de ma base de donne

Ce que j'obtiens

un formulaire vide :(

24 Réponse

2
40917
,

@Lartak, le tutoriel utilise se préfixe avec un préfix avec le rooter

Router::prefix('cockpit', 'admin');
17162
,

Je le sais bien ça, mais s'il veut accéder à une url avec cockpit comme prefix, il faut bien que dans les url de ces liens et formulaires qu'il définisse le prefix cockpit et non le prefix admin.
Par exemple, c'est comme s'il voulait aller dans une ville en particulier et que dans son GPS il en indique une autre, il ne pourra jamais y arriver.

40917
,

Non, c'est le router qui fera la transition.
L'un de mes sites est fait avec ce tutoriel et à aucun moment je mets "cockpit" dans le code

17162
,

En effet, je retire ce que j'ai dit alors.

2