url manager

Hello, i have issue with urlManager in Yii2 - I defined something like this:


                '<lang:\w+>/<controller:\w+>/<id:\d+>' => '<controller>/view',

                '<lang:\w+>/<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',

                '<lang:\w+>/<controller:\w+>/<action:\w+>' => '<controller>/<action>',

and when i access site like example.com/en/site/index - it render page correctly, but links generated like


echo \Yii::$app->urlManager->createUrl(['site/gallery']);

route to example.com/site/gallery - how to fix it?

create a file in app/components/UrlManager.php like this:




namespace app\components;


class UrlManager extends \yii\web\UrlManager {

	public function createUrl($params = []) {

		if (!isset($params['lg'])) {

			$language = isset($_GET['lg']) ? $_GET['lg'] : \Yii::$app->language;

			if (is_string($params)) {

				$params = [$params,'lg' => $language];

			} else {

				$params['lg'] = $language;

			}

		}

		return parent::createUrl($params);

	}

}



change lg for your atribute lang.

and in config where you have rules:




    'urlManager' => [

	'class'=>'app\components\UrlManager',

        'rules'=> 

         ....