CakePHP: обновление с 3.6.x до 4.0 "Исключение отсутствующего шаблона"

Я следовал руководству по обновлению (после того, как я обновился с3.6 к 3.8) но я получаю эту ошибку:

Ошибка: [Cake\View\Exception\MissingTemplateException] Файл шаблона "Error\error500.ctp" отсутствует

....

Если вы хотите настроить это сообщение об ошибке, создайте src\Template\Error\fatal_error.ctp

После процедуры обновления мои шаблоны переместились в app_name\templates каталог и переименован в *.php вместо того *.ctp. Я обновилapp.php а также app.default.php с новыми путями:

'App' => [
        'namespace' => 'App',
        'encoding' => env('APP_ENCODING', 'UTF-8'),
        'defaultLocale' => env('APP_DEFAULT_LOCALE', 'en_US'),
        'defaultTimezone' => env('APP_DEFAULT_TIMEZONE', 'UTC'),
        'base' => false,
        'dir' => 'src',
        'webroot' => 'webroot',
        'wwwRoot' => WWW_ROOT,
        //'baseUrl' => env('SCRIPT_NAME'),
        'fullBaseUrl' => false,
        'imageBaseUrl' => 'img/',
        'cssBaseUrl' => 'css/',
        'jsBaseUrl' => 'js/',
        'paths' => [
            'plugins' => [ROOT . DS . 'plugins' . DS],
            'templates' => [ROOT . DS . 'templates' . DS],
            'locales' => [ROOT . DS  . 'Locale' . DS],
        ],
    ],

Но все же приложение ищет файлы шаблонов с .ctp расширение и под src\Template\...

Что мне не хватает?

1 ответ

Из моего опыта:

Обновите CakePHP 3.x до 4.x

  • композитор обновление
  • запустите phpstan от --level 0 до 2 и исправьте свой код или проверьте в scrutinizer
  • прочтите Руководство по миграции 4.0: https://book.cakephp.org/4/en/appendices/4-0-migration-guide.html
  • прочтите Руководство по обновлению 4.0: https://book.cakephp.org/4/en/appendices/4-0-upgrade-guide.html Шаги:
  • Установите инструмент обновления
  • Переименовать файлы локали
  • Переименовать файлы шаблонов
  • После переименования файлов шаблона и языковых стандартов убедитесь, что вы обновили пути App.paths.locales и App.paths.templates, чтобы они были правильными.
  • Из файла композитора приложения удалите все пакеты cakephp/* (cakephp3), а также phpstan, стандарты кода, phpunit,.. run composer update
  • Применение рефакторинга Rector
  • composer require --update-with-dependencies "phpunit/phpunit:^8.0"
  • composer require --update-with-dependencies "cakephp/cakephp:4.0.*"
  • Установите свежий cakephp4 в папку вашего приложения. Пример:mkdir cakephp4 && cd cakeph4; и бегиcomposer create-project --prefer-dist cakephp/app:4.* .;
  • сравните ваши старые файлы cakephp с файлами из папки cakephp4, обновите все и скопируйте отсутствующие файлы
  • удалите cakephp4 и обновите папки
  • не забудьте добавить вверху php файлы <?php declare(strict_types=1);
  • composer cs-check тогда composer cs-fix
Другие вопросы по тегам