Je souhaite effectuer la modification suivante dans les routes CakePHP. Tout mot ou groupe de mots (séparés par un trait d'union) après l'URL d'un site web comme example.com/someword
o example.com/some-word
doit être redirigé vers controller => posts, action => view
. Mais mon problème est que le(s) mot(s) doit(vent) être en unicode. J'ai essayé cette expression régulière pour le texte de l'URL, mais cela ne fonctionne pas.
Router::connect ( '/:link', array ('controller' => 'posts', 'action' => 'view' ), array ('pass' => array ('link'), 'link' => '/^['.json_decode('" \u0531 "').'-'.json_decode('"" \u0587 "').'-]+$/u' ) ) ;
Je tiens cependant à préciser que ma regex
'/^['.json_decode('"\u0531"').'-'.json_decode('"\u0587"').'-]+$/u',
fonctionne parfaitement si je suis sur le point de faire un preg_match habituel comme
$regg = '/^['.json_decode('"\u0531"').'-'.json_decode('"\u0587"').'-]+$/u';
if (preg_match($regg, "my unicode string", $match)) {
var_dump($match); // outputs string as expected
}
die;
EDIT
Je me retrouve avec le code suivant
Router::connect ( '/:link', array ('controller' => 'posts', 'action' => 'view' ), array ('pass' => array ('link'), 'link' => '((?![a-zA-Z]).)+' ) );
comme faire en sorte que mon url contienne tout, sauf des lettres anglaises, mais ce n'est pas ce dont j'ai besoin, si j'ai 2 ou plusieurs langues différentes de l'anglais - cette méthode ne fonctionnera pas. Je veux donc envoyer le mot de chaque langue dans une action séparée.
cake version 2.x
EDIT 2
Il existe des solutions alternatives, comme dans les réponses ci-dessous, pour contourner la question, mais je cherche la manière exacte de faire ce dont j'ai besoin.
Remerciements