Bonjours,
j'ai deux petit problème qui m'agace dans le développement de mon site web.

  1. Mon site web sera un site multi-langues. J'ai des champs qui sont traduit dans une autre langue. Dans mon model Track j'ai des règle de validations.

J'ai des champs descriptions.fra et description.eng

<?php foreach(Configure::read('Config.languages') as $lang): ?>
        <?= $this->Form->input('Track.description.'.$lang, array('label' => 'Contenu ('.$lang.'):','type'=>'textarea','class'=>'form-control')); ?>
    <?php endforeach; ?>

Quand je dit à CakePhp de faire la vérification il y a une belle erreur "Data Error" qui s'affiche.

if($this->Track->save($datas,true)){
                $this->Session->setFlash("La chanson a bien été enregistré.",'notif');
                $this->redirect(array('action'=>'index'));
            } else {
                $this->Session->setFlash("Oups, La chanson n'a pas bien été enregistré.",'notif',array('type'=>'danger'));
            }

J'ai mis à false les vérification et tout fonctionne.

  1. J'ai un paramètre lang que je veux faire passer dans tout le site. Le problème est que j'ai des url personaliser dans mon router comme par exemple
    http://localhost:8888/eng/track/teste-1

Quand les utilisateur veut passer de français à Anglais les paramètre son perdu

Par défaut :

params => array(
        'plugin' => null,
        'controller' => 'tracks',
        'action' => 'view',
        'named' => array(),
        'pass' => array(
            (int) 0 => '1',
            (int) 1 => 'teste'
        ),
        'language' => 'eng',
        'slug' => 'teste',
        'id' => '1'
    )

Lors du changement de langue :

params => array(
        'plugin' => null,
        'controller' => 'tracks',
        'action' => 'view',
        'named' => array(),
        'pass' => array(),
        'language' => 'eng'
    )

Merci de votre aide.

4 réponses


lakamark
Auteur

Je lutilise dans mew models

Bonsoir.
Cela m'étonnerait que tu utilise le Behavior Translate, vu que tu as deux champs pour les langues dans ta table tracks.

lakamark
Auteur

@Lartak11 Les champ description.fra et description description.eng je pacoure le tableau des langue que je me suis fait dans mon boostrap :

Configure::write('Config.languages', array('fra','eng'));

C'est des chmaps qui ne sont pas dans ma table Track.

J'utilise la table i18n de cakephp pour "stocker" les traduction des champs. C'est au niveaux de la validation des donnés que ça plante. Par contre quand je désactive la validations tout fonctionne.