Ciao,
sto cercando di implementare delle regole per tradurre le url del mio sito.
Ho una estensione (https://github.com/codemix/yii2-localeurls) che infila il codice della lingua usata nella url ma questo parametro non è disponibile per creare ‘semplici’ regole nella configurazione urlManager tipo
'<language:it>/utenti'=>'users/index'
Seguendo un tutorial (http://blog.neattutorials.com/yii2-routing-urlmanager/) sono riuscito a scrivere questa classe
<?php
namespace common\components;
use Yii;
use yii\web\UrlRuleInterface;
use yii\base\Object;
class UrlLanguageRule extends Object implements UrlRuleInterface
{
public function createUrl($manager, $route, $params)
{
if ( Yii::$app->language==='it-IT'){
if ($route === 'users/index'){
return 'utenti';
}
}
return false; // this rule does not apply
}
public function parseRequest($manager, $request)
{
if ( Yii::$app->language==='it-IT'){
$url = $request->getPathInfo();
if ($url === 'utenti'){
$route = 'users/index';
$params = [];
return [$route, $params];
}
}
return false;
}
}
Ma mi pare un po’ contorta… nella prima funzione associo utenti a users/index e nella seconda associo users/index a utenti… mi pare strano, ma confesso che ho scritto capendo poco del vero funzionamento del tutto.
Inoltre vorrei un po’ generalizzarla, avendo già disponibili i nomi dei controller tradotti con Yii::$app->t(…)
Qualche suggerimento?
Grazie,
Nicola