Bonjour,

Voila je rencontre un petit problème avec mon code.
J'ai suivi une vidéo pour la création d'un behavior.Ceci ,me permettant d'enregistrer l'avatar d'un utilisateur et de permettre un professeur d'ajouter des fichiers numériques,audio,videos.Tout marche bien pour les fichiers numériques(enregistrement et telechargement).Pour le reste c'est la cata.

Mon modèle
/****
<?php
App::uses('AppModel', 'Model');
//App::uses('File', 'Utility');
class Cour extends AppModel
{
public $name = 'Cour';
public $actsAs = array('Containable','Upload.Upload' => array(
'fields' => array(
'nomfichier' => 'files/nomfichiers/:id/:t'
)
));

public $belongsTo = array(
    'Categorie' => array(
    'className'  => 'Categorie',
    'foreignKey' => 'categories_id',
    'counterCache' =>   true
    )   
);
/********************************************************************

controller
/**
public function editcours($id = null) {
$this->layout = 'admin';
if (!$id) {
throw new NotFoundException(('Invalid categorie'));
}
$cours = $this->Cour->findById($id);
if (!$cours) {
throw new NotFoundException(
('Invalid categorie'));
}

    if ($this->request->is(array('post', 'put'))) {
            $this->Cour->id = $id;
        $result = $this->Categorie->read('nom',$this->request->data['Cour']['categories_id']);
        $this->request->data['Cour']['categorie'] = $result['Categorie']['nom'];
        $this->request->data['Cour']['utilisateurs_id'] = $this->Auth->user('id');

        if ($this->Cour->save($this->request->data)) {

            $this->Session->setFlash('Cours a été modifie  avec success','default',array('class'=>'alert alert-success alert-border-bottom'));
            return $this->redirect(array('action' => 'index'));
        }
        $this->Session->setFlash('Erreur d\'envoi de la requette veuillez vérifier vos informations','default',array('class'=>'alert alert-danger alert-border-bottom'));
        }
    if (!$this->request->data) {
        $this->request->data = $cours;
    }
    $data['listcategorie'] = $this->Categorie->find('list',array(
        'fields'=>array('id','nom')
        ));
    $this->set($data);

}

Vue

/*****
<div class="fichierscours">
<div class="form-group has-feedback">
<?php echo $this->Form->input('types_id', array(
'label'=>'Type',
'type'=>'select',
'options' => array('1'=>'fichier', '2'=>'audio', '3'=>'video'),
'class'=>'form-control'));?>
</div>

        <div class="form-group ">
          <?php echo $this->Form->input('nomfichier_file', array(

          'type'=>'file',
          'require' =>false,
          'label'=>'Votre fichier(au format pdf,docx,pptx,mp4,mp3 ou flv)',
           ));?>
        </div>
        </div>

Je voudrais enregistrer un fichier vidéo,audio

J'obtiens ceci

Notice (8): Undefined index: Cour [APP\Controller\CoursController.php, line 47]
Error: SQLSTATE[HY000]: General error: 1364 Field 'categories_id' doesn't have a default value
SQL Query: INSERT INTO mooc1.cours (categorie, utilisateurs_id, modified, created) VALUES (NULL, 8, '2016-09-08 14:34:40', '2016-09-08 14:34:40')

Svp j'ai besoin de votre aide

1 réponse


Ton erreur es explicite, tu essaies d'enregistrer tes données sans catégorie et tu es obligé d'en avoir une.
Deux solution, dans ce cas :
1) Tu "forces" la catégorie
2) Tu autorises le champ categories_id à être NULL car il doit être à NOT NULL actuellement.