CakePHP с перехватом ошибок в AppError Автосоздание таблиц

В начале (когда я только познакомилась с пирожками) мне очень нравились страницы ошибок, которые так ненавязчиво намекали — а не создашь ли ты таблицу в базе данных? может быть стоит подумать о контроллере? и прочие очень нужные подсказки. Но потом, когда моя джедаистость в кейке выросла, а количество файлов для проектов сократилось до минимума — мне стало неприятно. В простых, однотипных решениях я не хочу делать одни и те же вещи каждый раз, я знаю какая таблица мне нужна. Контроллер — да он вовсе один, слегка распухший. Итак, что нам нужно — это перехват ошибок.

Для этого создаем в корне приложения (/app) файл app_error.php Обратите внимание, в этом месте, на верхнем уровне над всеми моделями/контроллерами/вьювами и прочим барахлишком у нас могут быть еще два (2!) нужных файла app_controller.php и app_model.php. Они наследуются всеми (еще раз подумайте!) соответствующими классами Вашего приложения. Безграничные возможности минимизации писанины, не правда ли? Но о них чуть потом. Итак, мы создали файл ошибки, и теперь мы должны прописать главный класс ошибок

В базовом классе мы уже можем найти все действия, которые стоит переопределить, но нам сейчас нужны совсем не все. Начнем с таблиц.

Что тут происходит? Если нужна таблица пользователей, например, мы только что скопировали проект простых сайтов на новый хостинг для установки и нет там еще такой таблицы — то мы ведь сами умные и знаем как таблица должна выглядеть. Да будет свет! Да появится таблица нужная! Схемы таблиц можно хранить в отдельном файле, добавлять логику к созданию — но посмотрите, как прекрасен этот мир) В коде есть маленькая заплатка — в самом начале очищается кеш таблиц базы данных, ведь то что мы создали таблицу так хитро не убирает ошибку «такой таблицы нет» в списке. Поэтому чистота — наш друг)

2 комментария “CakePHP с перехватом ошибок в AppError Автосоздание таблиц”

  1. Интересный tip. Но ИМХО проще залить дамп базы при переезде. А вот в ядре кейка этому есть применение. Например когда сессии используют БД, то таблица cake_sessions могла бы и автоматом создаться. Тем более, что скачиваемых пакетов кейка (1.3) файла sql с дампом cake_sessions на своем старом месте я не обнаружил.

    Ответить
    • кому как удобнее, сама возможность полезна (мне очень нравится уменьшать свою работу, а в одном скрипте переездов больше чем изменений главных таблиц)

      Ответить

Оставить комментарий ksu

Нажмите, чтобы отменить ответ.

XHTML: Вы можете использовать такие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">