CakePHP 1.1 auf 1.2 portieren
Da CakePHP 1.1 nicht kompatibel zu PHP 5.3 ist, müssen CakePHP 1.1 Anwendungen auf CakePHP 1.2 portiert werden, damit sie unter PHP 5.3 laufen.
Zur Portierung sind folgende Änderungen notwendig:
Benenne app
um in app_
.
Benenne cake
um in cake_
.
Lade CakePHP 1.2 herunter, entpacke so, dass das Verzeichnis app
das alte app
ersetzt und cake
das alte cake
.
Konfiguriere alles wie in der alten Anwendung.
Kopiere alle Controller von app_/controller
nach app/controller
.
Kopiere alle Views von app_/views
nach app/views
.
Kopiere alle Dateien von app_/webroot
nach app/webroot
.
Kopiere alle Models von app_/model
nach app/model
.
Benenne views/layouts/defaults.thtml
um in defaults.ctp
.
Zum Modell: Ein Attribut darf nicht gleich wie das Modell heißen, sonst macht cakePHP im form helper aus type='text'
ein type='select'
. Workaround: Man setzt
$options['options']:
$form->input('tour', array('type' => 'text', 'options'=>array(), ...)
Controller: Ersetze execute('...')
durch query('...')
.
Controller: Ersetze generateList(...)
durch find(...)
, wobei find andere Parameter benötigt.
Controller: Bedingungen der Form
$condition['datum']= "LIKE ".$this->data['Belastung']['datum']."%";
müssen umgeschrieben werden in
$condition['datum LIKE']= $this->data['Belastung']['datum']."%";
analog statt LIKE
weitere Operatoren wie >
, <
usw.
Ersetze HTML-Code zur Erzeugung von Formularen durch
$form->create('Model', array('url' => '/model/add'));
$form->submit('save');
$form->end();
Ersetze Formular-Elemente mit $html->input()
durch $form->input()
.
Ersetze auch alle anderen Formularelemente mit input()
, z.B. select
usw.
Die genannten Anpassungen waren bei der Portierung einer Anwendung notwendig. Vermutlich sind in anderen Anwendungen weitere Anpassungen nötig. Nach der Portierung auf CakePHP 1.2 kann auf CakePHP 1.3 portiert werden. Der entsprechende Migrationspfad für ein Update von 1.2 auf 1.3 ist dokumentiert unter:
http://book.cakephp.org/1.3/de/The-Manual/Appendices/Migrating-from-CakePHP-1-2-to-1-3.html