Генерация URL в модулях

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аватара пользователя
Apache02
Сообщения: 50
Зарегистрирован: 2014.02.09, 01:14

Генерация URL в модулях

Сообщение Apache02 »

Почему все ссылки на модули генерируются как ЧПУ? Именно все параметры ЧПУ.

Пример. На произвольной странице в модуле admin код:

Код: Выделить всё

<?php
echo CHtml::normalizeUrl(array('//site/login', 'service'=>'vk')), '<br />';
echo CHtml::normalizeUrl(array('/site/login', 'service'=>'vk')), '<br />';
echo CHtml::normalizeUrl(array('site/login', 'service'=>'vk')), '<br />';
echo CHtml::normalizeUrl(array('login', 'service'=>'vk')), '<br />';
?>
Генерирует ссылки:
/site/login?service=vk
/site/login?service=vk
/admin/site/login/service/vk
/admin/default/login/service/vk
Почему "/service/vk" вместо "?service=vk"?


Это ведет к излишкам при генерации ссылок на страницы и сортировки в CGridView в модулях.
urichalex
Сообщения: 994
Зарегистрирован: 2015.08.07, 11:03

Re: Генерация URL в модулях

Сообщение urichalex »

Правила так настроены
Аватара пользователя
Apache02
Сообщения: 50
Зарегистрирован: 2014.02.09, 01:14

Re: Генерация URL в модулях

Сообщение Apache02 »

urichalex писал(а): 2017.07.22, 21:57 Правила так настроены
Сделал так:

Код: Выделить всё

 			'urlManager'			=> array(
				'urlFormat'			=> 'path',
				'rules'				=> array(),
				'showScriptName'		=> false,
			),
результат:
/site/login/service/vk
/site/login/service/vk
/admin/site/login/service/vk
/admin/default/login/service/vk
не то
Аватара пользователя
Apache02
Сообщения: 50
Зарегистрирован: 2014.02.09, 01:14

Re: Генерация URL в модулях

Сообщение Apache02 »

Понял. Если не находит подходящего правила, то все GET параметры генерируются как ЧПУ, а я считал наоборот.
Странно что в стандартных шаблонах нет правил

Код: Выделить всё

		'<module:\w+>/<controller:\w+>/<action:\w+>/<id:\d+>'	=> '<module>/<controller>/<action>',
		'<module:\w+>/<controller:\w+>/<action:\w+>'		=> '<module>/<controller>/<action>',
Ответить