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

18 réponses


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.

aymen
Auteur

merci elscorto pour votre aide le code est marche bien :))

De rien, la prochaine fois oublie pas la politesse ;)

aymen
Auteur

oki ;)

aymen
Auteur

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

aymen
Auteur

Form to add an experience contains two button following the first and the other adds another experience in the same form

aymen
Auteur

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

aymen
Auteur

elle ne mais fonctionne pas . les deux bouton redirige toujours au même action

aymen
Auteur

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?

aymen
Auteur

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'

aymen
Auteur

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' => ''
)
)

aymen
Auteur

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']))

aymen
Auteur

bien bien sa marche merci beaucoup :)

aymen
Auteur

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);
}