Значения в строке запроса

Предположим, нужно для залогиненного пользователя подставлять название его компании перед всеми остальными частями роута. Роут такой:


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

Значание company хранится в сессии. Как автоматизировать подстановку этого параметра в строку урла (и делать это только если залогинен пользователь)?

сразу что пришло в голову продублировать правила ссылок с компанией.

не очень красиво, но работать будет. если есть компания, прописывать ее в параметрах, если нет, то будут ссылки без компании.

а не лучше вынести компанию в домен типа company-name.mysite.com

Переопределите createUrl и createAbsoluteUrl и опишите там автоматическую подстановку нужного параметра.

У нас к примеру сайт мультиязычный и что бы язык всегда подставлялся что бы урлы имели вид http://site.com/en/http://site.com/ru/… сделано вот так:




<?php

class ELangCUrlManager extends CUrlManager {


	public function createUrl($route, $params = array(), $ampersand = '&') {

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

			$params['lang'] = Yii::app()->GetLanguage();

		}

		if ($params['lang'] == 'en_us') {

			$params['lang'] = 'en';

		}

        

		return parent::createUrl($route, $params, $ampersand);

	}

}



Спасибо, тоже думал про переопределение createUrl, но в итоге пришел к субдоменам =)