@@ -29,23 +29,35 @@ class MultiLangUrlManager extends UrlManager
2929 public function createUrl ($ params )
3030 {
3131 if (isset ($ params [static ::LANG_PARAM_NAME ])) {
32- //Если указан идентификатор языка, то делаем попытку найти язык в БД,
33- //иначе работаем с языком по умолчанию
3432 $ lang = $ params [static ::LANG_PARAM_NAME ];
35- unset($ params [static ::LANG_PARAM_NAME ]);
33+ // unset($params[static::LANG_PARAM_NAME]);
3634 } else {
3735 //Если не указан параметр языка, то работаем с текущим языком
3836 $ lang = \Yii::$ app ->language ;
37+ $ params [static ::LANG_PARAM_NAME ] = $ lang ;
3938 //$lang = 'ru';
4039 }
4140
42- //Получаем сформированный URL(без префикса идентификатора языка)
43- $ url = parent ::createUrl ($ params );
41+ //Если урл вида /url/test то нужно убрать из параметров язык, поскольку он будет содержатся не в параметра а в pathInfo
42+ if ($ this ->enablePrettyUrl ) {
43+ unset($ params [static ::LANG_PARAM_NAME ]);
44+ }
4445
46+ //Если указанный язык = отображаемому на сайте по умолчанию, то не нужно менять урл
4547 if ($ lang == \Yii::$ app ->multiLanguage ->default_lang ) {
46- return $ url ;
48+ return parent :: createUrl ( $ params ) ;
4749 }
4850
51+ /**
52+ * Работает только с enablePrettyUrl
53+ */
54+ if (!$ this ->enablePrettyUrl ) {
55+ return parent ::createUrl ($ params );
56+ }
57+
58+ //Получаем сформированный URL(без префикса идентификатора языка)
59+ $ url = parent ::createUrl ($ params );
60+
4961 //Url absolute
5062 if (strpos ($ url , ':// ' ) !== false ) {
5163 $ urlData = parse_url ($ url );
@@ -65,10 +77,16 @@ public function createUrl($params)
6577 return "// " .$ this ->unparse_url ($ urlData );
6678
6779 } else {
68- if ($ url == '/ ' || $ url == '' ) {
69- return '/ ' .$ lang ;
80+ if ($ url == '' || $ url == "/ " ) {
81+ //Поддерживаем только суффикс "/" для поддержки других суффиксов, нужно это учесть в MultiLangRequest
82+ if ($ this ->suffix == "/ " ) {
83+ $ suffix = "/ " ;
84+ } else {
85+ $ suffix = "" ;
86+ }
87+ return '/ ' . $ lang . $ suffix ;
7088 } else {
71- return '/ ' . $ lang. $ url ;
89+ return '/ ' . $ lang . $ url ;
7290 }
7391 }
7492 }
0 commit comments