Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
How to migrate CakePHP 1.x to 2.xKeyword: CakePHP development, CakePHP 2.0, CakePHP migrationWe will focus on what we need...
If you are using “email” as your login field name      CakePHP 1.3: (inside AppController beforeFilter)         $this->Aut...
Helpers  •   The Ajax, Javascript, and XML helpers have been removed. You will need to replace these      helper calls wit...
Upcoming SlideShare
Loading in …5
×

How to migrate Cakephp 1.x to 2.x

5,920 views

Published on

How to migrate Cakephp 1.x to 2.x

Published in: Technology
  • Be the first to comment

How to migrate Cakephp 1.x to 2.x

  1. 1. How to migrate CakePHP 1.x to 2.xKeyword: CakePHP development, CakePHP 2.0, CakePHP migrationWe will focus on what we need to do to get CakePHP 1.3 application upgraded to CakePHP 2.2.3CakePHP 2.2.3 is the latest stable version now.Installation • This is pretty straight forward, same as CakePHP 1.3 version. • Download and unzip the CalePHP 2.2.3 and follow the instructions.Configuration • core.php • Make sure to copy the security.salt and Security.cipher_seed from your old core.php • Take notice of how errors, sessions and caching have changed. • database.php • There is a minor change on this file, • CakePHP 1.3: driver => mysqli • CakePHP 2.2.3: datasource => Database/Mysql • routes.php • Dont overwrite this file with your older one. • You can place your custom routes before or after CakePlugin::routes() • bootstrap.php • Copy all functions, constants and other code from your old bootstrap into the new one.Folder Structure • The cake folder is now inside lib folder. There is nothing to do with this. • Files and folders are now CamelCased instead of lower_underscored • Example: The “users” folder inside the View becomes “Users” • The controller files are now UsersController.php instead of users_controller.php • project_user_controller.php becomes “ProjectUsersController.php” • The model files are now User.php instead of user.php • project_user.php model becomes “ProjectUser.php” • The components files are now FormatComponent.php instead of format.php • The helpers files are now DatetimeHelper.php instead of datetime.phpMoved APP files • The parent app_classes have been moved and renamed as well. • Instead of app_controller.php, app_model.php, and app_helper.php now become Controller/AppController.php, Model/AppModel.php, and View/Helper/AppHelper.php.Auth Component and Login • Auth now supports multiple authorization adapters that can all be used together • Cake 1.3.x was automatically checking if user has correctly entered username/password inside your login() method of users_controller but in cake 2.x we need to manually call $this->Auth->login() this returns boolean value based on successful login or failure.
  2. 2. If you are using “email” as your login field name CakePHP 1.3: (inside AppController beforeFilter) $this->Auth->fields = array(username => email, password => password); CakePHP 2.2.3: (inside AppController beforeFilter) $this->Auth->authenticate = array(Form => array(fields => array(username => email, password => password))); Auth Login CakePHP 2.2.3: (inside UsersController login function) if (!empty($this->request->data)) { if ($this->Auth->login()) { $this->redirect($this->Auth->redirect()); } else { //$this->Session->setFlash(Your Email or Password was incorrect.); } } • CakePHP 2.x auth automatically hashes the password on login but not on save. We can add a beforeSave() method on the User model to hash the password. public function beforeSave($options = array()) { $this->data[User][password] = AuthComponent::password($this- >data[User][password]); return true; }Request Data • CakePHP 2.0 has done some request related changes. • The Request Object does not have “form” element any longer. • You will need to replace $this->params[form] with $this->request[data] or $this- >request->data. • $this->data needs to be replaced with $this->request->data • So, now we can use $this->request->data on both form submit and AJAX post. • Now, we need to check !empty($this->request->data) instead of “!empty($this- >data)” while saving a form.Views Changes • Use $this->Html->link() instead of $html->link() • Use $this->Form-> instead of $form-> • Use $this->Session-> instead of $session-> • Use $this->Paginator-> intead of $paginator -> • For JavaScript inclusion use $this->Html->script(“”) instead of $javascript->link()Moved Email Elements • Email elements have been moved from views/elements to View/Emails.
  3. 3. Helpers • The Ajax, Javascript, and XML helpers have been removed. You will need to replace these helper calls with appropriate alternatives • Helpers can no longer be called with “$helper->function()”. You need to update your helper calls to use $this->Helper->function() • If you are loading or importing your helpers inside another custom helper or component, • $myhelper = new DatetimeHelper() becomes $myhelper = new DatetimeHelper($this->_View) or $myhelper = new DatetimeHelper(new View(null))Components • All component files should be extended by Component Class instead of ObjectDB and Code Caution • There is no Enum Support in cakephp2.x as sql server doesnt have similar datatype. • You can change enum to tinyint(2) • In cake 1.3 used tinyint(1) for is_active database fields. • While retrieveing from database it returns 0/1 • But, cakePHP2.x no longer returns as 0. This will return bool(true) /bool(false) • Boolean column values will be casted to php native boolean type automatically.__() Function and Pagination • The __() function no longer has the option to echo. It always returns • Change the Pagination code, • CakePHP 1.3: • echo $this->Paginator->counter(array( format => __(Page %page% of %pages%, showing %current% records out of %count% total, starting on record %start%, ending on %end%, true))); • CakePHP 2.2.3: • echo $this->Paginator->counter(array( format => __(Page %page% of %pages%, showing %current% records out of %count% total, starting on record %start%, ending on %end%)));

×