Jan
25

Kleine Tricks

Vieles in CakePHP lässt sich leichter programmieren, wenn man den einen oder anderen “Trick” kennt, der einem hilft schneller ans Ziel zu kommen.

$this->data im View nutzen

Wenn man im Controller Daten abholt und dann gleich an this->data zuweist, dass man die Daten nicht extra an den View weitergeben muss, sondern steht als this->data gleich zur Verfügung.

1
     $this->data = $this->MyModel->find('all');

Das allseits bekannte set muss dann nicht ausgeführt werden. Also kann man sich das

1
     $this->set('data', $this->data);

sparen, sondern kann im View einfach direkt weiterarbeiten:

1
2
3
4
     // ausgabe.ctp
     foreach ($this->data as $data) {
         // ausgabe von $data
     }

Wenn man das konsequent anwendet lassen sich viele Views recht schnell umsetzen, da man nicht ständig das $thi->set nutzen muss. Falls man übrigens mehrere Datenbereiche abholen und an den View übergeben will, dann nutzt man am Besten compact() also wie hier beispielsweise:

1
2
3
4
5
     $products = $this->Product->find('all');
     $categories = $this->Category->find('all');
     $customers = $this->Customer->find('all');
     // und jetzt mit einem set()
     $this->set(compact('products', 'categories', 'customers'));

Damit stehen dann im View alle drei Variablen $products, $categories, $customers bereit.

$id nutzen für das Update

Der zweite kleine Trick den ich hier am Sonntag noch schnell zur verfügung stellen will hat mit dem Update von einzelnen Feldern zu tun. Der umständliche Weg sieht in etwa so aus:

1
2
3
     $this->data = $this->MyModel->find('first', array('conditions'=>array('id' => $id)));
     $this->data['MyModel']['meinfeld'] = 'neuer Feldinhalt';
     $this->save($this->data);

Aber es geht in dem Fall ein wenig einfacher und zwar so:

1
2
     $this->MyModel->id = $id;
     $this->MyModel->saveField('meinfeld', 'neuer Feldinhalt');

So das war heute der Sonntagsbeitrag. Morgen gibts wieder etwas Ausführlicheres.

Oben