Bonjour j'ai télécharger directement le résultat final du tutoriel "Développer un site avec CakePHP" , j'ai regarder un peu les dossiers Controller, Model et View je me suis inspirer de la page "categories" j'ai repris les fichiers "CategoriesController.php" & "Category.php" & "admin_index.ctp" "admin_edit.ctp" et adapter pour ajouter ma nouvelle page "serveurs" (page pour gérer des serveurs minecraft) donc j'ai tout adapter:

/Controller/ServeursController.php

<?php
class ServeursController extends AppController{

    function sidebar(){
        return $this->Server->find('all'); 
    }
    function admin_index(){
        $d'serveurs'] = $this->Server->find('all');
        $this->set($d);
    }
    function admin_edit($id = null){
        if($this->request->is('post') || $this->request->is('put')){
            $this->Server->save($this->request->data); 
            $this->Session->setFlash("La catégorie a bien été sauvegardée","notif");
            $this->redirect(array('action'=>'index'));
        }elseif($id){
            $this->Server->id = $id; 
            $this->request->data = $this->Server->read(); 
        }
    }
    function admin_delete($id){
        $this->Session->setFlash('La catégorie a bien été supprimée','notif'); 
        $this->Server->delete($id); 
        $this->redirect($this->referer()); 
    }
}

/Model/Server.php

<?php 
class Server extends AppModel{

    public function afterFind($data){
        foreach($data as $k=>$d){
            if(isset($d'Server']) && isset($d'Server']'id'])){
                $d'Server']'link'] = array(
                    'controller'    => 'Serveurs',
                    'action' => 'server',
                );
            }
            $data$k] = $d;
        }
        return $data;
    }

    public function beforeSave(){
        if(empty($this->data'Server']'slug']) && isset($this->data'Server']'slug']) && !empty($this->data'Server']'name']))
            $this->data'Server']'slug'] = strtolower(Inflector::slug($this->data'Server']'name'],'-'));
        return true; 
    }
}

/view/Servers/admin_index.ctp

<div class="page-header">
    <h1>Gestion des serveurs</h1>
</div>
<p><?php echo $this->Html->link("Ajouter un serveur",array('action'=>'edit'),array('class'=>'btn primary')); ?></p>
<table>
    <tr>
        <th>ID</th>
        <th>Nom du client</th>
        <th>Nom du serveur</th>
        <th>Nombre de slot</th>
        <th>Actions</th>
    </tr>
    <?php foreach($serveurs as $k=>$v): $v = current($v); ?>
    <tr>
        <td><?php echo $v'id']; ?></td>
        <td><?php echo $v'users_client']; ?></td>
        <td><?php echo $v'name']; ?></td>
        <td><?php echo $v'slot']; ?></td>
        <td>
            <?php echo $this->Html->link("Editer",array('action'=>'edit',$v'id'])); ?> - 
            <?php echo $this->Html->link("Supprimer",array('action'=>'delete',$v'id']),null,'Voulez vous vraiment supprimer ce serveur'); ?>
        </td>
    </tr>
    <?php endforeach; ?>
</table>

/view/Servers/admin_edit.ctp

<div class="page-header">
    <h1>Editer un serveur</h1>
</div>
<?php echo $this->Form->create('Server'); ?>
    <?php echo $this->Form->input('users_client',array('label'=>'Client')); ?>
    <?php echo $this->Form->input('name',array('label'=>"Nom du serveur")); ?>
    <?php echo $this->Form->input('slot',array('label'=>"Nombre de slot")); ?>
    <?php echo $this->Form->input('id'); ?>
<?php echo $this->Form->end('Envoyer'); ?>

j'ai créer une nouvelle table nommé users: avec les colonnes:name, slot, users_client, id
j'ai ajouter le lien sur la sidebar mais quand j'essaye d'y accéder sa m'affiche cette erreur:
Fatal error: Call to a member function find() on a non-object in /var/www/test/app/Controller/ServeursController.php on line 10
Que faire ? merci d'avance :)

4 réponses


Faut une table serveurs non?

Toujours la même erreur "Fatal error: Call to a member function find() on a non-object in /var/www/test/app/Controller/ServeursController.php on line 10" bizarre ...

Euh $this->Serveur plutôt

Sinon dans ton controlelr précise que tu veux utilise le modèle Server en faisant
public $uses = array('Server');

Edit: J'ai trouver merci beaucoup :) & Bonne soirée.