Salut j'ai deux tables enseignement et cycle avec comme relation( enseignement hasmany cycle et cycle belongsto enseignement).
dans mon model Enseignement, j'ai ceci:
<?php
class Enseignement extends AppModel
{
public $name = 'Enseignement';
public $hasMany = array(
'Cycle' => array(
'className' => 'Cycle',
'foreignKey' => 'enseignements_id',
'order' => 'Cycle.created DESC',
'fields' => 'nomcycle,description',
'dependance' => true
)
);
public $validate = array(
'specialite' => array(
'rule1'=>array('rule'=>'isUnique','message'=>'Cette specialite existe déja','last'=>false),
'rule2'=>array('rule'=>array('minLength',4),
'message'=>'Votre Pseudo doit contenir plus de 8 caractères'),
'required' => array('rule' => array('notEmpty'),'message'=>'Un pseudo est requis'))
);
}
?>
dans le model Cycle j'ai ceci:
<?php
class Cycle extends AppModel
{
public $name = 'Cycle';
public $belongsTo = array(
'Enseignement' => array(
'className' => 'Enseignement',
'foreignKey' => 'enseignements_id',
'fields' => 'specialite'
)
);
public $validate = array(
'nomcycle' => array(
'rule' => 'isUnique',
'allowEmpty' =>false,
'message' => 'Ce champ est déja utilisé'
),
'desciption' => array(
'rule' => array('allowEmpty' =>false),
'message' => 'Ce champ ne doit pas être vide'
)
);
}
?>
j'effectue bien mon crud avec le model enseignement par contre dans la vue pour ajouter un cycle j'ai ceci :
<?php echo $this->set('title_for_layout','Ajout d\' cycle'); ?>
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">Enregistrement d'un cycle</h3>
</div>
<div class="panel-body">
<?php echo $this->Form->create('Cycle'); ?>
<div class="row">
<div class="col-lg-12">
<div class="col-lg-12">
<div class="col-lg-12 line-input">
<?php
echo $this->Form->input('enseignements_id', array('options' => $listenseignement));
$this->Form->unlockField('enseignements_id');
?>
</div>
<div class="col-lg-12 line-input">
<?php
echo $this->Form->input('nomcycle', array('label'=>'Nom du cycle ','type' => 'text','class'=>'form-control','placeholder'=>'Entrer le cycle','required'=>true));
?>
</div>
<div class="col-lg-10 line-input">
<?php
echo $this->Form->input('description', array('label'=>'Description ','type' => 'text','class'=>'form-control','placeholder'=>'Entrer la description','required'=>true));
?>
</div>
<div class="col-lg-10 line-input">
<p >
<?php
echo $this->Form->button(' Sauvegarder', array('type'=>'submit','class'=>'btn btn-primary btn-submit glyphicon glyphicon-ok'));
echo $this->Form->button(' Annuler', array('type'=>'reset','class'=>'btn btn-default btn-reset glyphicon glyphicon-refresh'));
echo $this->Form->end();
?>
</p>
</div>
</div>
<div class="col-lg-6">
<p class="navbar-text text-justify">
<h1>Information</h1>
Cette section vous permet de créer les types de poste.
Toute les opérations éffectuées dans votre gestion tiendrons compte de ce type.
comme exemple on pourait avoir type1 = 1 sequence, type2=2 sequence, etc....
</p>
</div>
</div>
</div>
</div>
<div class="panel-footer"></div>
</div>
et dans mon controller j'ai ceci pour enregistrer dans la base de donnée:
public function addcycle()
{
$this->layout = 'default';
$listenseignement = $this->Cycle->Enseignement->find('list', array('fields' => array('specialite')));
$this->set(compact('listenseignement'));
debug($listenseignement);
if($this->request->is('post'))
{
debug($validatePost);
$this->Cycle->create();
if($this->Cycle->save($this->request->data,true))
{
$this->Session->setFlash('Donner sauvegarder avec success','default',array('class'=>'alert alert-success'));
debug($this->request->data);
return $this->redirect(array('action' => 'index'));
}
$this->Session->setFlash('Erreur de sauvegarde, verifier vos informations','default',array('class'=>'alert alert-warning'));
}
}
dans mon appController j'ai ceci:
<?php
/**
* Application level Controller
*
* This file is application-wide controller file. You can put all
* application-wide controller-related methods here.
*
* CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
* Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
*
* Licensed under The MIT License
* For full copyright and license information, please see the LICENSE.txt
* Redistributions of files must retain the above copyright notice.
*
* @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
* @link http://cakephp.org CakePHP(tm) Project
* @package app.Controller
* @since CakePHP(tm) v 0.2.9
* @license http://www.opensource.org/licenses/mit-license.php MIT License
*/
App::uses('Controller', 'Controller');
class AppController extends Controller {
public $helpers = array('Html','Form','Session');
public $components = array('Session','Security' =>array(
'csrfUseOnce' => false
));
/*public function beforeFilter()
{
//debug($this->request);
}*/
}
lorsque je veus sauvegarder, cela me génère un trou noir je ne sais pas comment faire pour utiliser le componentsecurity dans une association belongsto
Bonjour.
Pour commencer, corriges le contenu de ton sujet.
Les commentaires de CakePHP, ne nous intéressent pas et ne nous aiderons pas.
Mets bien le code dans les contenus de code et le reste en dehors.
Les contenus du genre, titre de la page par exemple, ce n'est pas la peine non plus de nous le mettre.
Et donnes nous un code complet, car les trucs du genre :
Form->create('Cycle'); ?> Form->input('enseignements_id', array('options' => $listenseignement));
C'est comme si tu voulais que nous te donnions une solution à ton problème, mais en même temps, tu n'en a rien à faire.
Pour terminer, il n'y a pas de différence d'utilisation du composant Security, qu'il y ait des associations de models ou non.
ok je m'escuse c'est la première fois que j'entends parler des trous noir en programmation suis bouleversé . dans mon model Enseignement, j'ai ceci
<?php
class Enseignement extends AppModel
{
public $name = 'Enseignement';
public $hasMany = array(
'Cycle' => array(
'className' => 'Cycle',
'foreignKey' => 'enseignements_id',
'order' => 'Cycle.created DESC',
'fields' => 'nomcycle,description',
'dependance' => true
)
);
public $validate = array(
'specialite' => array(
'rule1'=>array('rule'=>'isUnique','message'=>'Cette specialite existe déja','last'=>false),
'rule2'=>array('rule'=>array('minLength',4),
'message'=>'Votre Pseudo doit contenir plus de 8 caractères'),
'required' => array('rule' => array('notEmpty'),'message'=>'Un pseudo est requis'))
);
}
?>
et dans le model cycle ceci:
<?php
class Cycle extends AppModel
{
public $name = 'Cycle';
public $belongsTo = array(
'Enseignement' => array(
'className' => 'Enseignement',
'foreignKey' => 'enseignements_id',
'fields' => 'specialite'
)
);
public $validate = array(
'nomcycle' => array(
'rule' => 'isUnique',
'allowEmpty' =>false,
'message' => 'Ce champ est déja utilisé'
),
'desciption' => array(
'rule' => array('allowEmpty' =>false),
'message' => 'Ce champ ne doit pas être vide'
)
);
}
?>
dans la vue addcycle j'ai ceci:
<?php echo $this->set('title_for_layout','Ajout d\' cycle'); ?>
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">Enregistrement d'un cycle</h3>
</div>
<div class="panel-body">
<?php echo $this->Form->create('Cycle'); ?>
<div class="col-lg-12">
<div class="col-lg-10">
<div class="col-lg-8 line-input">
<?php
echo $this->Form->input('enseignements_id', array('options' => $listenseignement));
$this->Form->unlockField('enseignements_id');
?>
</div>
<div class="col-lg-12 line-input">
<?php
echo $this->Form->input('nomcycle', array('label'=>'Nom du cycle ','type' => 'text','class'=>'form-control','placeholder'=>'Entrer le cycle','required'=>true));
?>
</div>
<div class="col-lg-10 line-input">
<?php
echo $this->Form->input('description', array('label'=>'Description ','type' => 'text','class'=>'form-control','placeholder'=>'Entrer la description','required'=>true));
?>
</div>
<div class="col-lg-10 line-input">
<p >
<?php
echo $this->Form->button(' Sauvegarder', array('type'=>'submit','class'=>'btn btn-primary btn-submit glyphicon glyphicon-ok'));
echo $this->Form->button(' Annuler', array('type'=>'reset','class'=>'btn btn-default btn-reset glyphicon glyphicon-refresh'));
echo $this->Form->end();
?>
</p>
</div>
</div>
<div class="col-lg-2">
<p class="navbar-text text-justify">
<h1>Information</h1>
Cette section vous permet de créer les types de poste.
Toute les opérations éffectuées dans votre gestion tiendrons compte de ce type.
comme exemple on pourait avoir type1 = 1 sequence, type2=2 sequence, etc....
</p>
</div>
</div>
</div>
<div class="panel-footer"></div>
</div>
<div class="clearfix"></div>
et dans le Appcontroller j'ai ceci
<?php
App::uses('Controller', 'Controller');
class AppController extends Controller {
public $helpers = array('Html','Form','Session');
public $components = array('Session','Security' =>array(
'csrfUseOnce' => false
));
/*public function beforeFilter()
{
//debug($this->request);
}*/
}
mon souci est que lors d'un save je rencontre un trou noir et ne sais pas le pourquoi et comment la gérer
Voici le message que je reçois
The request has been black-holed
Error: The requested address '/Gestionetablissement/Cycles/addcycle' was not found on this server.