Bonjour,
Je suis en train de mettre en place site multi language (fr/en).
Pour le moment mes différents modules (actu, equipe et contact) fonctionne bien dans les deux langues. Mais j'ai un problème avec la gestion de contenu (controller contents).
Le contenu s'affiche bien en français mais dès que je passe en anglais rien ne s'affiche. J'ai pourtant fait exactement la même chose que les autres controllers.
Voici le model de contents:
class Content extends AppModel {
var $name = 'Content';
var $actsAs = array(
'Translate' => array (
'nom' => '_nom',
'titre' => '_titre',
'titre2' => '_titre2',
'slug' => '_slug',
'contenu' => '_contenu',
'metatitre' => '_metatitre',
'metamotcle' => '_metamotcle',
'metadescription' => '_metadescription'
)
);
}
Le controller de contents (function view):
function view($id = null) {
$id = $this->params'id'];
$actu = $this->Content->find('first', array('conditions' => array('Content.id' => $id)));
$this->set('c', $actu);
}
et la vue:
// META
$this->set('title_for_layout', $c'Content']'metatitre']);
$this->set('desc_for_layout', $c'Content']'metadescription']);
$this->set('motcle_for_layout', $c'Content']'metamotcle']);
$this->set('titre1', $c'Content']'titre']);
$this->set('titre2', $c'Content']'titre2']);
$this->set('image', $c'Content']'image']);
// CONTENT
echo $c'Content']'contenu'];
J'ai fait un debug qui d'affiche avec la version fr:
Step-up Website en version françaiseStep-up Website English version
Step-up Website
test
test
test
MENU
(line )
app\views\contents\view.ctp2
Array
(
[Content] => Array
(
[id] => 3
[nom] => test
[titre] => test
[titre2] => test
[slug] => test
[contenu] =>
test fr
[image] =>
[metatitre] =>
[metamotcle] =>
[metadescription] =>
[accueil] => 0
[created] => 2011-08-30 08:04:28
[modified] => 2011-08-30 08:07:10
[locale] => fre
)
[_nom] => Array
(
[0] => Array
(
[id] => 296
[locale] => fre
[model] => Content
[foreign_key] => 3
[field] => nom
[content] => test
)
)
[_titre] => Array
(
[0] => Array
(
[id] => 301
[locale] => fre
[model] => Content
[foreign_key] => 3
[field] => titre
[content] => test
)
[1] => Array
(
[id] => 302
[locale] => eng
[model] => Content
[foreign_key] => 3
[field] => titre
[content] => test
)
)
[_titre2] => Array
(
[0] => Array
(
[id] => 297
[locale] => fre
[model] => Content
[foreign_key] => 3
[field] => titre2
[content] => test
)
[1] => Array
(
[id] => 298
[locale] => eng
[model] => Content
[foreign_key] => 3
[field] => titre2
[content] => test
)
)
[_slug] => Array
(
[0] => Array
(
[id] => 299
[locale] => fre
[model] => Content
[foreign_key] => 3
[field] => slug
[content] => test
)
[1] => Array
(
[id] => 300
[locale] => eng
[model] => Content
[foreign_key] => 3
[field] => slug
[content] => test
)
)
[_contenu] => Array
(
[0] => Array
(
[id] => 303
[locale] => fre
[model] => Content
[foreign_key] => 3
[field] => contenu
[content] =>
test fr
)
[1] => Array
(
[id] => 304
[locale] => eng
[model] => Content
[foreign_key] => 3
[field] => contenu
[content] =>
test en
)
)
[_metatitre] => Array
(
[0] => Array
(
[id] => 305
[locale] => fre
[model] => Content
[foreign_key] => 3
[field] => metatitre
[content] =>
)
[1] => Array
(
[id] => 306
[locale] => eng
[model] => Content
[foreign_key] => 3
[field] => metatitre
[content] =>
)
)
[_metamotcle] => Array
(
[0] => Array
(
[id] => 307
[locale] => fre
[model] => Content
[foreign_key] => 3
[field] => metamotcle
[content] =>
)
[1] => Array
(
[id] => 308
[locale] => eng
[model] => Content
[foreign_key] => 3
[field] => metamotcle
[content] =>
)
)
[_metadescription] => Array
(
[0] => Array
(
[id] => 309
[locale] => fre
[model] => Content
[foreign_key] => 3
[field] => metadescription
[content] =>
)
[1] => Array
(
[id] => 310
[locale] => eng
[model] => Content
[foreign_key] => 3
[field] => metadescription
[content] =>
)
)
)
Dans le debug on voit qu'il y a bien les deux version (fr/en).
Si quelqu'un a une idée de mon problème.
Quand CakePHP trouve un champ non traduit pour lui c'est que l'élément n'est pas disponible dans le language ciblé et du coup il n'affichera effectivement rien
Merci bien pour ton aide ainsi que tes nombreux tutoriels.
Le problème venait du champ nom qui n'existait pas dans la seconde langue.
Bonne fin de journée.