Как я могу изменить yii, чтобы принимать отрицательные идентификаторы записи?

Я пытаюсь настроить интерфейс yii для существующей базы данных. Согласно истории, у него есть несколько таблиц с отрицательными идентификаторами - есть хороший набор последовательных идентификаторов от 1, но есть большой набор с большими положительными и отрицательными идентификаторами. Нет, я не знаю почему.

При использовании yii для извлечения одной из этих записей из списка (все ванильные yii) URL-адрес выглядит примерно так: http://myyiipath/index.php/houses/-75313, Затем возвращается страница с сообщением об ошибке "невозможно найти запрошенное действие". Он работает, получая информацию о записи, когда ему дают действительный положительный идентификатор.

Я понимаю, что YII использует - в качестве разделителя при выборе действия, так что я предполагаю, что отрицательное значение интерпретируется как пустое:id.

Так можно ли изменить yii для использования действия по умолчанию (со значением со знаком), когда не указан контроллер, или я могу направить действие по умолчанию на какой-то обработчик, или это просто кошмар?

1 ответ

Решение

Вам придется изменить

<id:\d+>

в

<id:\-?\d+>

в ваших правилах urlManager.

Пример:

'<controller:\w+>/<action:\w+>/<id:\-?\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
'<controller:\w+>/' => '<controller>/index',
Другие вопросы по тегам