This is no longer supported as mid-route greedy stars behaved
erratically, and complicated route compiling. Outside of these two
edge-case features and the above changes the router behaves exactly
as it did in 1.2.

Il n’y a plus de debug = 3. Le controller dumps generated
by this setting often caused memory consumption issues making it an
impractical and unusable setting. The $cakeDebug variable has
also been removed from View::renderLayout You should remove
this variable reference to avoid errors.

Configure::load() can now load configuration files from
plugins. Use Configure::load('plugin.file'); to load
configuration files from plugins. Any configuration files in your
application that use . in the name should be updated to use
_

Cache

In addition to being able to load CacheEngines from app/libs or
plugins, Cache underwent some refactoring for CakePHP1.3. These
refactorings focused around reducing the number and frequency of
method calls. The end result was a significant performance
improvement with only a few minor API changes which are detailed
below.

The changes in Cache removed the singletons used for each Engine
type, and instead an engine instance is made for each unique key
created with Cache::config(). Since engines are not singletons
anymore, Cache::engine() was not needed and was removed. In
addition Cache::isInitialized() now checks cache
configuration names, not cache engine names. You can still use
Cache::set() or Cache::engine() to modify cache
configurations. Also checkout the
Nouvelles caractéristiques dans CakePHP 1.3 for
more information on the additional methods added to Cache.

It should be noted that using an app/libs or plugin cache engine
for the default cache config can cause performance issues as the
import that loads these classes will always be uncached. It is
recommended that you either use one of the core cache engines for
your default configuration, or manually include the cache
engine class before configuring it. Furthermore any non-core cache
engine configurations should be done in
app/config/bootstrap.php for the same reasons detailed above.

Model::del() and Model::remove() have been removed in
favor of Model::delete(), which is now the canonical delete
method.

Model::findAll, findCount, findNeighbours, removed.

Dynamic calling of setTablePrefix() has been removed.
tableprefix should be with the $tablePrefix property, and any
other custom construction behavior should be done in an overridden
Model::__construct().

DboSource::query() now throws warnings for un-handled model
methods, instead of trying to run them as queries. This means,
people starting transactions improperly via the
$this->Model->begin() syntax will need to update their code so
that it accesses the model’s DataSource object directly.

Missing validation methods will now trigger errors in
development mode.

Missing behaviors will now trigger a cakeError.

Model::find(first) will no longer use the id property for
default conditions if no conditions are supplied and id is not
empty. Instead no conditions will be used

For Model::saveAll() the default value for option “validate” is
now “first” instead of true

Datasources

DataSource::exists() has been refactored to be more consistent
with non-database backed datasources. Previously, if you set
var$useTable=false;var$useDbConfig='custom';, it was
impossible for Model::exists() to return anything but false.
This prevented custom datasources from using create() or
update() correctly without some ugly hacks. If you have custom
datasources that implement create(), update(), and
read() (since Model::exists() will make a call to
Model::find('count'), which is passed to
DataSource::read()), make sure to re-run your unit tests on
1.3.

Databases

Most database configurations no longer support the “connect” key
(which has been deprecated since pre-1.2). Instead, set
'persistent'=>true or false to determine whether or not a
persistent database connection should be used

SQL log dumping

A commonly asked question is how can one disable or remove the SQL
log dump at the bottom of the page?. In previous versions the HTML
SQL log generation was buried inside DboSource. For 1.3 there is a
new core element called sql_dump. DboSource no longer
automatically outputs SQL logs. If you want to output SQL logs in
1.3, do the following:

<?phpecho$this->element('sql_dump');?>

You can place this element anywhere in your layout or view. The
sql_dump element will only generate output when
Configure::read('debug') is equal to 2. You can of course
customize or override this element in your app by creating
app/views/elements/sql_dump.ctp.

Automagic support for .thtml view file extension has been
removed either declare $this->ext='thtml'; in your
controllers, or rename your views to use .ctp

View::set('title',$var) no longer sets
$title_for_layout when rendering the layout.
$title_for_layout is still populated by default. But if you
want to customize it, use $this->set('title_for_layout',$var).

View::$pageTitle has been removed. Use
$this->set('title_for_layout',$var); instead.

The $cakeDebug layout variable associated with debug = 3 has
been removed. Remove it from your layouts as it will cause errors.
Also see the notes related to SQL log dumping and Configure for
more information.

All core helpers no longer use Helper::output(). The method was
inconsistently used and caused output issues with many of
FormHelper’s methods. If you previously overrode
AppHelper::output() to force helpers to auto-echo you will need
to update your view files to manually echo helper output.

TextHelper

TextHelper::trim() is deprecated, used truncate()
instead.

TextHelper::highlight() no longer has:

an $highlighter parameter. Use $options['format']
instead.

an $considerHtml``parameter.Use``$options['html'] instead.

TextHelper::truncate() no longer has:

an $ending parameter. Use $options['ending'] instead.

an $exact parameter. Use $options['exact'] instead.

an $considerHtml``parameter.Use``$options['html']
instead.

PaginatorHelper

PaginatorHelper has had a number of enhancements applied to make
styling easier.
prev(), next(), first() and last()

The disabled state of these methods now defaults to <span> tags
instead of <div> tags.

passedArgs are now auto merged with URL options in paginator.

sort(), prev(), next() now add additional class names
to the generated html. prev() adds a class of prev. next()
adds a class of next. sort() will add the direction currently
being sorted, either asc or desc.

FormHelper

FormHelper::dateTime() no longer has a $showEmpty
parameter. Use $attributes['empty'] instead.

FormHelper::year() no longer has a $showEmpty parameter.
Use $attributes['empty'] instead.

FormHelper::month() no longer has a $showEmpty
parameter. Use $attributes['empty'] instead.

FormHelper::day() no longer has a $showEmpty parameter.
Use $attributes['empty'] instead.

FormHelper::minute() no longer has a $showEmpty
parameter. Use $attributes['empty'] instead.

FormHelper::meridian() no longer has a $showEmpty
parameter. Use $attributes['empty'] instead.

FormHelper::select() no longer has a $showEmpty
parameter. Use $attributes['empty'] instead.

Default URLs generated by form helper no longer contain “id”
parameter. This makes default URLs more consistent with documented
userland routes. Also enables reverse routing to work in a more
intuitive fashion with default FormHelper URLs.

FormHelper::submit() Can now create other types of inputs
other than type=submit. Use the type option to control the type of
input generated.

FormHelper::button() Now creates <button> elements
instead of reset or clear inputs. If you want to generate those
types of inputs use FormHelper::submit() with a
'type'=>'reset' option for example.

Also be sure to check the Mises à jour 2.0 for additional changes and
new features in the FormHelper.

HtmlHelper

HtmlHelper::meta() no longer has an $inline parameter.
It has been merged with the $options array.

HtmlHelper::link() no longer has an $escapeTitle
parameter. Use $options['escape'] instead.

HtmlHelper::para() no longer has an $escape parameter.
Use $options['escape'] instead.

HtmlHelper::div() no longer has an $escape parameter.
Use $options['escape'] instead.

HtmlHelper::tag() no longer has an $escape parameter.
Use $options['escape'] instead.

HtmlHelper::css() no longer has an $inline parameter.
Use $options['inline'] instead.

SessionHelper

flash() no longer auto echos. You must add an
echo$session->flash(); to your session->flash() calls. flash()
was the only helper method that auto outputted, and was changed to
create consistency in helper methods.

CacheHelper

CacheHelper’s interactions with Controller::$cacheAction has
changed slightly. In the past if you used an array for
$cacheAction you were required to use the routed URL as the
keys, this caused caching to break whenever routes were changed.
You also could set different cache durations for different passed
argument values, but not different named parameters or query string
parameters. Both of these limitations/inconsistencies have been
removed. You now use the controller’s action names as the keys for
$cacheAction. This makes configuring $cacheAction easier as
it’s no longer coupled to the routing, and allows cacheAction to
work with all custom routing. If you need to have custom cache
durations for specific argument sets you will need to detect and
update cacheAction in your controller.

TimeHelper

TimeHelper has been refactored to make it more i18n friendly.
Internally almost all calls to date() have been replaced by
strftime(). The new method TimeHelper::i18nFormat() has been added
and will take localization data from a LC_TIME locale definition
file in app/locale following the POSIX standard. These are the
changes made in the TimeHelper API:

TimeHelper::format() can now take a time string as first
parameter and a format string as the second one, the format must be
using the strftime() style. When called with this parameter order
it will try to automatically convert the date format into the
preferred one for the current locale. It will also take parameters
as in 1.2.x version to be backwards compatible, but in this case
format string must be compatible with date().

TimeHelper::i18nFormat() has been added

Deprecated Helpers

Both the JavascriptHelper and the AjaxHelper are deprecated, and
the JsHelper + HtmlHelper should be used in their place.

You should replace

$javascript->link() with $html->script()

$javascript->codeBlock() with $html->scriptBlock() or
$html->scriptStart() and $html->scriptEnd() depending on
your usage.

The shell dispatcher has been modified to exit with a 1 status
code if the method called on the shell explicitly returns
false. Returning anything else results in a 0 status code.
Before the value returned from the method was used directly as the
status code for exiting the shell.

Shell methods which are returning 1 to indicate an error should
be updated to return false instead.

Shell::error() has been modified to exit with status code 1
after printing the error message which now uses a slightly
different formatting.

ShellDispatcher::stderr() has been modified to not prepend
Error: to the message anymore. It’s signature is now similar to
Shell::stdout().

ShellDispatcher::shiftArgs()

The method has been modified to return the shifted argument. Before
if no arguments were available the method was returning false, it
now returns null. Before if arguments were available the method was
returning true, it now returns the shifted argument instead.

Support for these three directories, both in app/vendors as
well as plugin/vendors has been removed. They have been
replaced with plugin and theme webroot directories.

Test Suite and Unit Tests

Group tests should now extend TestSuite instead of the deprecated
GroupTest class. If your Group tests do not run, you will need to
update the base class.

Vendor, plugin and theme assets

Vendor asset serving has been removed in 1.3 in favour of plugin
and theme webroot directories.

Schema files used with the SchemaShell have been moved to
app/config/schema instead of app/config/sql Although
config/sql will continue to work in 1.3, it will not in future
versions, it is recommend that the new path is used.