Internationalization avec base de donées

Par wenz, il y a 11 ans


Bonjour,
je suis entrain d'internationaliser une application mais j'ai quelques difficultés au niveau de l'enregistrement des contenu ( fre, et eng) dans la base de données.
voici mes codes

public function edit($id=null) {

         $user_id=$this->Auth->User('id');
         if(!$user_id){
        $this->redirect('/users/login');
          die();
        }

        $this->Cabinet->id = $id;
        if (!$this->Cabinet->exists()) {
            throw new NotFoundException(__("Contenu indispobible"));
        }
        if ($this->request->is('post') || $this->request->is('put')) {
            $d= $this->request->data;
            $this->Cabinet->locale=Configure::read('Config.languages');
            debug($this->Cabinet->locale=Configure::read('Config.languages'));
            debug($this->request->data);
            if($this->Cabinet->Save(array('id'=>$d'Cabinet']'id'],'contenu'=>$d'Cabinet']'contenu']))) {
                $this->redirect(array('action' => 'visualiser'));
              } 
               } else {

            $this->request->data=$this->Cabinet->readAll(null,$id);

        }
 }

Edit.ctp

<?php echo $this->Form->create('Cabinet');?>
            <?php foreach(Configure::read('Config.languages')as $lang):?>
                <b>EDITER CONTENU CABINET </b> <?php echo $lang;?>
            <p><?php echo $this->Form->input('Cabinet.id');?></p>
            <p><?php echo $this->Form->input('Cabinet.contenu.'.$lang,array('type'=>'textarea','label'=>false,'class'=>'form-control'));?></p><br />
            <?php endforeach;?>

                <p align="center"><?php echo $this->Form->submit('MODIFIER',array('class'=>'btn btn-success','style'=>'width:150px;'));?></p>
                <?php echo $this->Form->end();?>

Mon problème c'est que je n'arrive pas enregistrer les deux contenus dans la BDB, j'ai cette erreur:Database Error

Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Array' in 'field list'.
Comment enregister les deux contenus par rapport aux diffétentes locale.
Merci

2 réponses

Lartak, il y a 11 ans

Bonsoir.
C'est normal que tu aies une erreur lors de la sauvegarde, étant donné que tu envoies "plusieurs enregistrements" sur un simple save.
Je te conseille fortement de voir/revoir le tutoriel vidéo sur l'internationalisation, de Grafikart pour mieux comprendre comment utiliser le Behabior (comportement) Translate, car tu ne l'utilise pas de la bonne manière actuellement.

wenz, il y a 11 ans

Merci Lartak11 pour ta réponse, j'ai suivi plusieurs fois le tuto de grafikart mais je n'arrive pas à comprendre comment il a sauvegardé les deux tableau, avec système de behavior, il a parlé d'utiliser ce code

$this->Poste->locale=Configure::read('Config.languages');

pour préciser l'enregistrement des deux tableau mais quand je le fait rien, tu peux m'expliquer un peu le pricipe stp.
Meric