Bonjour à tous,

Je rencontre depuis hier un problème sur un site que je développe et je n'ai jusqu'à maintenant pas trouvé de solution. Le site en question est développé à l'aide du framework CakePHP 2 et je travaille actuellement sur la partie internationalisation.

Après avoir fait mes routes, que j'ai ajouté la détection automatique de la langue (le classique beforeFilter dans l'AppController), et que j'ai mis la transformation des URL pour qu'elles contiennent la langue (dans l'AppHelper), j'obtiens l'erreur suivante sur certains liens :
Warning (2): Illegal string offset 'language' [APP\View\Helper\AppHelper.php, line 8]

Le plus étrange, c'est que le lien que j'obtiens est exactement celui que je veux mais c'est simplement le warning qui me dérange, même si il disparaît lors de la mise en production.

Bref, faisons parler le code !

AppHelper.php

<?php
App::uses('Helper', 'View');
class AppHelper extends Helper {
    public function url($url = null, $full = false) {
        if(!isset($url'language']) && isset($this->params'language'])) {
            $url'language'] = $this->params'language']; /* L'erreur indiquée se trouve à cette ligne */
        }
        return parent::url($url, $full);
    }
}

routes.php

<?php
/*...*/
Router::connect('/:language/:controller/:action/*', array(), array('language' => '[a-z]{2}'));
Router::connect('/:language/:controller/*', array(), array('language' => '[a-z]{2}'));
Router::connect('/admin/:language/:controller/:action/*', array('admin' => true), array('language' => '[a-z]{2}'));
Router::connect('/admin/:language/:controller/*', array('admin' => true), array('language' => '[a-z]{2}'));
/*...*/

Et un lien qui créé ce warning

<?= $this->Html->link(__('Edit'), array('action' => 'edit', $aProduct'Product']'id'])); ?>

Le lien au-dessus se trouve sur une page admin et me donne par exemple : /admin/en/products/edit/1 ou /admin/fr/products/edit/1

J'obtiens uniquement cette erreur si je consulte la page avec la langue dans l'URL (par exemple en étant sur /admin/en/products/).

Je suis sûr que le problème est bête comme tout mais là je bloque ! Si quelqu'un pourrait m'aider ce serait fort appréciable.

Merci d'avance,
Raf.

1 réponse


RafaelK
Auteur

Hello,

Effectivement, ça résout mon problème ! Merci beaucoup !!

J'ignorais que la réponse se trouvait dans les commentaires de la vidéo, je pousserai un peu plus mes recherches la prochaine fois.

A+
Raf