Bonjour, j'ai mis un système de gestion des contenus multi-langues sur mon backoffice et celui ci fonctionne très bien j’ai suivi la doc :
Cakephp 3 Doc.
Cependant j’aimerais traduire en cascade des elements associés à mon model.
J’ai des Posts qui ont des ,Metas
Voici ce que j’envoi à mon controller Posts action add()
debug()
'fr' => [
'title' => 'Titre en Français',
'slug' => '',
'body' => '<p>Text FR Nullam tincidunt adipiscing enim. Aliquam lobortis. Praesent vestibulum dapibus nibh. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In dui magna, posuere eget, vestibulum et, tempor auctor, justo.<br></p>',
'online' => '0',
'category_id' => '1',
'type_id' => '2',
'metas' => [
(int) 0 => [
'meta_key' => 'picture',
'type_id' => '2',
'meta_value' => 'url de l'image en FR'
],
(int) 1 => [
'meta_key' => 'laureat_actuel',
'type_id' => '2',
'meta_value' => 'url de la photo en FR'
],
(int) 2 => [
'meta_key' => 'date',
'type_id' => '2',
'meta_value' => 'date en FR'
],
(int) 3 => [
'meta_key' => 'nom',
'type_id' => '2',
'meta_value' => 'Nom en FR'
],
(int) 4 => [
'meta_key' => 'bio',
'type_id' => '2',
'meta_value' => 'Bio en FR'
]
]
],
'gb' => [
'title' => 'Titre en GB',
'slug' => '',
'body' => '<p><span style="line-height: 22.4px;">Text GB Nullam tincidunt adipiscing enim. Aliquam lobortis. Praesent vestibulum dapibus nibh. Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In dui magna, posuere eget, vestibulum et, tempor auctor, justo.</span><br></p>',
'metas' => [
(int) 0 => [
'meta_key' => 'picture',
'type_id' => '2',
'meta_value' => 'url en GB'
],
(int) 1 => [
'meta_key' => 'laureat_actuel',
'type_id' => '2',
'meta_value' => 'photo en GB'
],
(int) 2 => [
'meta_key' => 'date',
'type_id' => '2',
'meta_value' => 'date GB'
],
(int) 3 => [
'meta_key' => 'nom',
'type_id' => '2',
'meta_value' => 'nom GB'
],
(int) 4 => [
'meta_key' => 'bio',
'type_id' => '2',
'meta_value' => 'bio GB'
]
]
]
Voilà comment je sauvegarde mes traductions :
$post = $this->Posts->newEntity($this->request->data, ['translations' => true]);
$post = $this->Posts->patchEntity(
$post,
$this->request->data,
[
'associated' => ['Metas']
]
);
$translations = $this->request->data;
foreach ($translations as $lang => $data) {
$post->translation($lang)->set($data, ['guard' => false]);
}
$this->Posts->save($post);
Pour le Post la traduction est opérationnel, cependant pour les Metas c’est pas bon, j’ai bien l’entrée dans la table Metas mais pas la correspondances dans la table i18n.
Connaissez vous un paramètre ou un argument à passer pour forcer la prise en charge des traductions des models associés ?
Bonjour, Dois-je traiter les éléments en deux requêtes distincte pour arriver à traduire les données du Post et des Metas liée au Post ? Si oui dois-je le faire dans un afterSave() ?
Merci pour vos réponses
Personne n'a la moindre idée de ce que je dois faire pour faire cette insertion proprement ?