Salut à tous .
Je suis entrain de suivre le tuto sur l'internationalisation et la je bloque sur l'insertion des données dans la tables i18n.

J'ai paramétré mon model en question :

class CategoriesSki extends AppModel{

    public $validate = array(
        'name' => array(
            'rule' => 'isUnique',
            'allowEmpty' => false,
            'require' => true,
            'message' => "Cette catégorie existe dèjà"
            )
        );
    public $actsAs = array(
        'Translate' => array(
            'name'
        )
    );

}

Mon controller :

function category_add(){

        if($this->request->is('post'))
        {
            $data = $this->request->data;
            $this->CategoriesSki->locale = Configure::read('Config.languages');
            $this->CategoriesSki->create();

            if($this->CategoriesSki->save($data))
            {
                $this->Session->setFlash("La catégorie a bien été ajouter","notif");
                return $this->redirect(array( 'action' => 'admin_index'));
            }else
            {
                $this->Session->setFlash("La catégorie existe déjà","notif", array("type" => "error"));
            }
        }

    }

Et la vue:

<?php echo $this->Form->create('CategoriesSki') ; ?>
        <?php foreach (Configure::read('Config.languages') as $lang): ?>
        <?php echo $this->Form->input('CategoriesSki.name.'.$lang , array('label' => 'Nom ('.$lang.' )')) ; ?>

        <?php endforeach;?>
        <?php echo $this->Form->end('Envoyer') ; ?>

Du coup je suis comme sur le tuto mais la quand je veux faire le save j'ai une erreur:

Array to string conversion [CORE\Cake\Model\Datasource\DboSource.php, line 1001]

Je comprend que l'erreur me dit que on peut pas insérer un tableau a la place d'un string mais sur le tuto il fait comme ça et c'est le behavior qui doit s'en charger or ce n'est pas le cas..

Je suis sur la version 2.42

Merci d'avance

2 réponses


Bonji
Réponse acceptée

Essaye de modifier dans ton Model:

public $actsAs = array(
'Translate' => array(
'name' => 'translate_name'
)
);

Ou sinon dans ton Controller:
if($this->CategoriesSki->save Associated ($data))

workfel
Auteur

A merci sa fonctionne avec la méthode saveAssociated.

Encore merci ;)