Задать вопрос
myks92
@myks92
Нашёл решение — пометь вопрос ответом!

Yii как изменять ссылку при переносе контроллера?

Всем привет) Есть такая больная тема, как изменение ссылок по проекту. Сейчас ссылки делаются так:

Html::a(Html::encode($model->profile->fullName), ['/user/profile/view', 'id' => $model->profile->id])


Все хорошо работает до одного момента. До того, пока вдруг не придумается поменять место расположения или перенести файлы в другое место. Например, решил поменять модуль на "Директор". И перекинул их из одного места в другое и путь стал таким:

Html::a(Html::encode($model->profile->fullName), ['/director/profile/view', 'id' => $model->profile->id])


Теперь нужно искать по всему коду, где я ставил
['/user/profile/view', 'id' => $model->profile->id]
и менять на
['/director/profile/view', 'id' => $model->profile->id]


Конечно, можно пользоваться поисковиком IDЕ и менять все через него, но не хотелось бы это делать без вмешательства. Хочется просто перенести файлы и не париться по не правильным роутам. Ведь я могу забыть изменить один роут и летит ошибка 404. Тем самым постоянно требуется после переноса смотреть где что не изменено.

Может быть имеет смысл вынести url в методы модуля?
Может имеет смысл сделать train?
Может как-то прописывать роуты по другому?
Может быть нужно использовать Alias?

Подскажите, каким путём лучше пойти? Возможно есть какие-то решения Yii?
  • Вопрос задан
  • 81 просмотр
Подписаться 1 Средний Комментировать
Решения вопроса 2
usdglander
@usdglander
Yipee-ki-yay
Может быть имеет смысл вынести url в методы модуля?
Может имеет смысл сделать train?
Может как-то прописывать роуты по другому?
Может быть нужно использовать Alias?

А может быть и поменять правила в роутере.
Ответ написан
slo_nik
@slo_nik Куратор тега Yii
Добрый день.
Название модуля можно получить так:
Yii::$app->controller->module->id
Контролера так же (если не ошибся)
Yii::$app->controller->id
Попробуйте подставлять эти значения в ссылки и проверьте, возможно сработает.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы