You probably know it already: the first release candidate (RC1) of CakePHP 1.2 has been released today (see the announcement).

Here some things I noticed/encountered while migrating from the beta version to RC1.

In app/config/core.php the class name for ACL has changed. Instead of

Configure::write('Acl.classname', 'DB_ACL');

it is now

Configure::write('Acl.classname', 'DbAcl');

The model-based storage engine for the cache (cake/libs/cache/model.php) has been removed.

Probably the first thing you notice when you migrate to the new version are the warnings caused by the deprecated “vendor” function. This function has been replaced by App::import(). Unfortunately, you can’t perform a simple search/replace operation as files/directories which don’t follow the cake conventions have to be treated differently (see also Loading vendor files). Examples:

App::import('Vendor', 'follows/cake/conventions'); // .php is automatically appended
App::import('Vendor', 'unconventional', array('file' => 'doesnt/follow/Cake/Conventions.php');

Another newly deprecated method you might use is Model::execute(). It has been replaced by Model::query(). This time you can use search/replace.

With Model::find() I encountered a situation, where the method didn’t return any data. I don’t know whether it is a bug or simply no longer supported. Here the code I used (simplified):

$this->Location->find('list', array('fields' => 'id, name'));

It performs the correct SQL statement, but somehow the preparation of the result doesn’t work. A simple workaround is to use the model alias for the field names:

$this->Location->find('list', array('fields' => 'Location.id, Location.name'));

Or as mentioned by Xr in a comment:

$this->Location->find('list');

A new feature of the FormHelper caused a visual problem in my application: it adds a class with the name of the input type to the respective input field (e.g. “text” to a text field, “password” to a password field, etc.). As I already used a CSS class with the name “text”, my forms looked a bit ugly after the update ;-)

The latest issue I encountered was a blank page (only the performed SQL statements were shown). It was caused by the following snippet which worked with the beta version (don’t ask me why there was an exit at the end of the method *g*):

public function xy() {
    ...
    $this->render('aview');
    exit;
}

After removing the exit, the view was rendered as expected, obviously something changed internally.

All in all, the migration was quite smooth. Thanks to the cake team for this piece of cake :)