Обновление CakePHP 1.1 на 1.3

11:29

cakephp_update
Недавно вышла новая версия CakePHP 1.3 с многочисленными изменениями. Так получилось, что один мой старый проект на версии фреймворка 1.1 я не переводил на версию 1.2, поэтому решил сразу переписать его для 1.3. Хочу вкратце написать о процессе миграции приложений.

Начать лучше с создания шаблона из командной строки: cake -app <directory> bake. После этого в каталоге <directory> появится пустое приложение для версии 1.3. Первым делом копируем файлы старого приложения в этот новый каталог:

/models/*
/controllers/*
/views/*
/vendors/*
- причем ваши собственные библиотеки лучше сразу перенести из /vendors/ в /libs/
/app_controller.php, app_model.php
/webroot/js/*, /webroot/img/*, /webroot/css/* и прочие каталоги.
Файл /webroot/index.php копировать не нужно, т.к. он обновился.

У шаблонов поменялось расширение ещё с версии 1.2, поэтому их нужно просто переименовать из *.thtml в *.ctp.

По очереди открывая файлы настроек в каталоге config, аккуратно переносим все настройки путем редактирования новых файлов. И не забываем переделать пути в routes.php.

Настал черед кода. Все используемые компоненты и хелперы теперь нужно указывать в принудительном порядке (и при обновлении с 1.2). Например:

2.public $helpers = array('Session','Html','Form');
1.public $components = array('Session','Auth','Cookie');

Единственное исключение – хелпер Paginator. Хелпер Javascript отсутствует, ему на смену пришел Jshelper. А если вы использовали javascript->link(), то просто поменяйте на html->script(). Кстати, к версии 1.2 это тоже относится.

Основные изменения на всех уровнях MVC:

Модели

  • Все функции find… нужно заменить на соответствующие find(‘all’…), find(‘first’…), find(‘count’…) и так далее. А метод generateList() – на find(‘list’…).
  • Старые методы execute() необходимо заменить на query().
  • Удаление del() переименовать в delete(). К любым другим методам del() (в компоненте Session, например) это тоже относится.

Контроллеры

  • Заголовок страниц нужно устанавливать либо с помощью $this->set(‘title_for_layout’,'…’), или аналогично, но внутри шаблона.
  • Если вы использовали свои методы для разбивки на страницы, замените их на paginate() и сделайте соответствующие изменения в шаблонах. То же самое касается и авторизации: старые «логины» лучше переписать с использованием компонента Auth.
  • Не забудьте также о новых компонентах Email и Cookie.
  • Загрузка сторонних библиотек, моделей и прочих файлов производится через App::import(): App::import(‘Model’,'…’), App::import(‘Vendor’,'…’), App::import(‘Lib’,'…’).

Шаблоны

  • Все методы для работы с формами теперь находятся в хелпере Form. Следовательно нужно поменять все $html->form… на $form->input() и т.д.
  • Метод для доступа к значениям формы $html->tagValue стал называться $form->value(); $html->tagErrorMsg замените на $form->error, a $html->labelTag на $form->label.
  • Функцию для вывода элементов renderElement() переименуйте в element().
  • Все обращения к моделям и полям в старом формате (Model/field) нужно заменить на новый – Model.field.
  • Желательно (но не обязательно) также использовать новый формат доступа к хелперам через $this: например, обращение к хелперу form: $this->Form->input(). Сделано это было для того, чтобы освободить пространство для пользовательских переменных.

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

Все эти сведения, а также другие отличия можно найти и в официальной документации:

Удачи в обновлении!

(c)

Далее

Simple Form Authentication in cakePHP 1.2.x.x

11:30

form

There has been a lot of questions about user authentication lately so I thought it was appropriate to create a tutorial that covered the very basics

 

In this tutorial we'll cover all aspects of MVC in an authentication role, logging a user in, maintaining a session, and restricting unauthorized access to controller actions.

 

Though this article is based on CakePHP 1.2.x, the same concepts apply in 1.1.x and most of the code can be reused.

More

Авторизация в CakePHP с пользователями, группами и правилами

11:28

avtorizaciya-v-cakephp-s-polzovatelyami-gruppami-i-pravilami

Сегодня я расскажу вам об очень полезном и удобном компоненте для авторизации пользователей. Как известно в CakePHP входит готовый компонент Auth, который, фактически, является не самой понятной частью Cake’а. Благодоря ребятам из Studiocanaria процесс использования этого компонента стал значительно проще, понятней и удобней.

Далее

CakePHP Auth Component For Dummies Tutorial

SimpleAcl — простой компонент для авторизации и проверки прав пользователей

15:26

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

Эти задачи — авторизацию и определение прав доступа к различным функциям — приходится решать при разработке каждого сайта. В CakePHP есть встроенный компонент Acl для работы с правами, но он слишком навороченный для простых сайтов. Часто, если надо просто ограничить доступ к админке, мы в своей студии используем простой ValidationComponent, единственное что модифицированный под использование Http-Digest авторизации.

В случаях же когда надо и авторизовать, и проверять права, можно использовать SimpleAcl-компонент. Я наткнулся на него в Пекарне.

Далее