Какие изменения нужно сделать в коде, чтобы перейти с CakePHP 3 на CakePHP 4?
Как я могу обновить проект с CakePHP 3 до CakePHP 4?
Я попытался установить последний пакет CakePHP 3.8 и преобразовать его в Cakephp 4 в соответствии с руководством по обновлению CakePHP 4.
Он не обновляется должным образом, отображается ошибка, как показано ниже
Missing Template::Error: The view for PagesController::display() was not found.
Confirm you have created the file: "Pages/welcome.ctp" in one of the following paths: /var/www/html/cake38/templates/Pages/home.ctp
1 ответ
Вам не нужно беспокоиться об этих двух предупреждениях, пока вы не обновитесь до 4.x (запустите composer outdated
, он покажет вам брошенные пакеты). Если они все еще существуют, то проверьте свойcomposer.lock
file и найдите имена пакетов, чтобы выяснить, для каких пакетов они требуются, а затем посмотрите, есть ли обновленные версии этих пакетов, которые вы можете использовать.
Изменения, которые вам нужно внести для обновления, в значительной степени описаны в руководстве по миграции, здесь нет смысла повторять их. Вам следует выполнить обычный процесс обновления, а именно:
- обновите свои зависимости композитора
- обновите файлы / структуру скелета приложения в соответствии с целевой версией (конфигурация, двоичные файлы, оболочки и т. д., см. https://github.com/cakephp/app/tree/3.8.0)
- запустите свой набор тестов и исправьте сбои.
Как только вы перейдете на 3.8 и все исправите, следуйте руководству по обновлению 4.0, то есть:
- запустить инструмент обновления
- затем снова обновите свои зависимости, запустите свой набор тестов и исправьте сбои.
Обычно сообщения об устаревании как бы говорят вам, как что-то исправить, т.е. они говорят вам, что использовать вместо устаревшего кода. Если у вас есть проблема с некоторыми конкретными устаревшими версиями, которые вы не знаете, как исправить, я бы посоветовал вам подробнее остановиться на них. Для быстрой помощи вам, вероятно, лучше спросить об этом в канале CakePHP Slack/IRC.
Для .ctp
файлы, если проблема все еще существует после обновления до 4.x, выполните поиск в коде приложения, а также в коде поставщика для строки ctp
Чтобы выяснить, где еще могут быть ссылки на это, это не проблема, для которой есть общее решение.