public function add() {
if ($this->request->is('post')) {
$this->Exprience->create();
$users = $this->Auth->user('id');
$cvs = $this->Exprience->Cv->find('first',array('conditions' => array('user_id'=>$users)));
//$this->request->data'Exprience']'cv_id'] =intval($cvs);
// $this->set(compact('cvs'));
$this->Exprience->saveField('cv_id',$cvs);
//$this->Exprience->save(array('Exprience' => array('cv_id' => $cvs) );
if ($this->Exprience->save($this->request->data)) {
$this->Session->setFlash(__('The exprience has been saved'));
$this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The exprience could not be saved. Please, try again.'));
}
}
$niveaucariers = $this->Exprience->Niveaucarier->find('list');
$pays = $this->Exprience->Pay->find('list');
$secteurs = $this->Exprience->Secteur->find('list');
$this->set(compact('niveaucariers', 'pays', 'secteurs'));
}
message d'erreur
Bonjour,
Je suis en train de créer un (site|application) où je gère des cvs, mais lors de l'enregistrement d'un cv, j'ai un message d'erreur,
Voici mon code (cf au dessus)
et mon message d'erreur, le champs array n'existe pas dans la table.
]
Voilà une fois les bonnes manières posées on comprend mieux, pour ta réponse, je dirai que ton problème vient des datas que tu met dans ton save, le soucis est que ton find first te renvois un tableau et ton saveFiled attend une valeur.
Donc deux façon, soit dans le saveField, tu mets $cvs'Cv']'id'](je présume que c'est l'id) ou alors dans ton find('first') tu lui demande de renvoyer l'indice courant de cette manière
$cvs = current($this->Exprience->Cv->find('first',array('conditions' => array('user_id'=>$users))));
$this->Exprience->saveField('cv_id',$cvs'id']);
Tu ne précises pas non plus de champs, dans ton find, donc lui te récupère tout tes champs, ça peut planter aussi de là, il semblerait que ça soit l'id que tu veilles récupéré, tu peux préciser dans ton find de cette manière
$cvs = $this->Experience->Cv->find('first',array('fields'=>array('id'),'conditions' => array('user_id'=>$users)));
Après avec le peu d'info que tu donnes, je saia pas si c'est ce que tu veux, ne m'en veux pas pour la remarque du début mais un peu de politesse, ça fait plaisir et on obtient généralement des réponses plus rapidement.
plz comment fait 2 bouton en view de add experience chacun fait une fonction le premier sauvegarde et redirect a un autre controlleur et la 2 éme faire apele une autre fois a la fonction add experience et sauvgarde le donné (ajouter une autre expérience)
et merci d'avance ;)
re,
écris en anglais si c'est plus simple pour toi ;)
Si j'ai bien compris tu veux deux bouton qui te renvois vers deux action, tu dis que l'un deux renvois vers un autre controller, dans ce cas là pourquoi tu ne fais pas 2 formulaires, 1 pour celui qui renvois sur l'autre controller et le 2nd qui renvois vers ton action add_experience
Form to add an experience contains two button following the first and the other adds another experience in the same form
je fait un seul formulaire puisque les même champ j'utilise et le bouton ajoute une autre expérience taper si l'utilisateur possède plus qu'une expérience et l'autre fonction comme validation
ok je vois le truc
Il faut que tes deux submit ait des name différent comme
$this->Form->submit('Add Experience',array('name'=>'add'));
$this->Form->submit('Save All',array('name'=>'save'));
Puis dans ton action add, tu vérifies quel submit a été cliqué et tu fais le traitement que tu veux par
if($this->request->is('post')){
// cas bouton add
if(!empty($this->request->data'Cv']'add'])){
$this->Cv->save($this->request->data);
// tu rediriges vers ton formulaire
$this->redirect(array('controller'=>'cvs','action'=>'add'))
}
// cas bouton save
else{
$this->Cv->save($this->request->data);
// tu redirige vers ton autre page
$this->redirect(array('controller'=>'cvs','action'=>'index'));
}
}
Je pense que ça doit correspondre à ce que tu souhaites
cette condition ne marche pas"if(!empty($this->request->data'Cv']'add']))"
toujours "else" qui fonctionne
Si tu fais un debug sur $this->request->data, sur les 2 boutons, qu'est ce que ça te sort?as tu bien une différence?
oui il y'a une déférence sur la 1 ère bouton affiche 'add'=>'add experience ' et sur la 2 ème bouton affiche 'save'=>'save all'
array(
'add' => 'Add Experience',
'Exprience' => array(
'niveaucarier_id' => '1',
'etat' => '0',
'nomentreprise' => '',
'ville' => '',
'pay_id' => '1',
'poste' => '',
'secteur_id' => '1',
'debut' => array(
'month' => '04',
'day' => '01',
'year' => '2012'
),
'fin' => array(
'month' => '04',
'day' => '01',
'year' => '2012'
),
'description' => ''
)
)
array(
'save' => 'Save All',
'Exprience' => array(
'niveaucarier_id' => '1',
'etat' => '0',
'nomentreprise' => '',
'ville' => '',
'pay_id' => '1',
'poste' => '',
'secteur_id' => '1',
'debut' => array(
'month' => '04',
'day' => '01',
'year' => '2012'
),
'fin' => array(
'month' => '04',
'day' => '01',
'year' => '2012'
),
'description' => ''
)
)
Je pense savoir pourquoi, pourquoi tu n'as pas le nom du modèle dans tes debugs ?
Essaye plutôt comme ça voir if(!empty($this->request->data'add']))
je un problème sur le routing quand je fait url de controler pages action show ne marche pas et voila erreur image de l'erreur
et doans le fechier route voila le code
Router::connect('page/:id-:slug', array('controller' => 'pages', 'action' => 'show'), array('pass'=> array('id','slug'), 'id'=>'[0-9]+','slug' =>'[a-z0-9\-]+'));
et le code de fichier show ce controller pages
function show($id = null,$slug = null){
if(!$id)
throw new NotFoundException('Aucune page ne correpond à cet ID');
$page = $this->Offre->find('first',array(
'conditions' => array('id' => $id)
));
if(empty($page))
throw new NotFoundException('Aucune page ne correpond à cet slug');
if($slug != $page'Offre']'slug'])
$this->redirect($page'Offre']'link'],301);
$d'page'] = current($page);
$this->set($d);
}