Как я могу изменить 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',