Salut à tous !!
J'ai un problème lorsque je veux insérer des données dans la BDD il ne les enregistres pas!
Mon controller

<?php
class CategoriesController extends AppController
{
/**
 * Le controller utilise le model Categorie
 *
 * @var array
 */
    public $uses = array('Categorie');

    function admin_index()
    {
        $d'categorie'] = $this->Categorie->find('all'); 
        $this->set($d);
    }

    function admin_edit($id=null)
    {
        if(!empty($this->request->data))
        {
            if($this->Categorie->save($this->request->data))
            {
                $this->Session->setFlash("La catégorie a bien été créer","notif");
                $this->redirect(array('action'=>'index')); 
            }
            else
            {
                $this->Session->setFlash("La catégorie n'a pas été créer","notif", array('type' => 'error'));
            }
        }
        elseif($id != null)
        {
            $this->Categorie->id = $id;
            $this->request->data = $this->Categorie->read();
        }
    }

}

Le model:

<?php
class Categorie extends AppModel
{
    public $useTable = "categories";

    public function beforeSave()
    {

        $data = $this->data'Categorie'];
        //si le slug est vide on recup le titre et le formate avec Inflector    
        if(empty($data'Category']'slug']) && isset($data'Category']'slug']) && !empty($data'Category']'name']))
        {
            $data'Category']'slug'] = strtolower(Inflector::slug($data'Category']'name'], '-'));
            return true;
        }

    }
}

Mais si dans mon controller j'utilise le model "Category" cela fonctionne donc je ne vois pas pourquoi cela ne fonctionne pas avec le Model "Categorie" ?!

Merci d'avance ;)

6 réponses


coloo
Réponse acceptée

Le singulier de categories est category.

++

workfel
Auteur

Oui mais dans mon controller j'ai

public $uses = array('Categorie');

Donc il devrait utiliser le model Categorie ?!

Désolé je débute sur cake...

Ton public ne sert à rien si tu fais appel au model qui est rattaché logiquement à ton modèle.
Ton problème est Category =)(convention de cake :p)

puis toi aussi tu n'es pas réellement d'accord je cite :

if(empty($data'Category']'slug']) && isset($data'Category']'slug']) && !empty($data'Category']'name']))

++ ^^

workfel
Auteur

Ben enfait quand je debbug mon $this->request->data j'ai:

array(
    'Categorie' => array(
        'Category' => array(
            'name' => 'Film',
            'slug' => ''
        )
    )
)

Donc du coup j'ai stocker $data = $this->$data'Categorie'] c'est pour cela que je fait $data'Category']'slug'].

Bon je vais suivre les conventions de Cake j'ai voulu modifier cela car j'essayer de changer pour mieux comprendre ;)

Merci ;)

Bonne continuation ^^ J'ai fait la même erreur au début =)

workfel
Auteur

Merci ;)