Formular Validierung und Verarbeitung in CakePHP

CakePHP

Neu in der Verarbeitung ist die patchEntity-Funktion aus dem Cake\ORM. Damit ermöglicht Cake den merge der POST-Daten ins Model-Entity inklusive vorhergehenden Validierung.

// Beispiel Controller Action: NewsletterReceivers.subscribe
    public function subscribe()
    {
        $newsletterReceiver = $this->NewsletterReceivers->newEntity();
        if ($this->request->is('post')) {
            $newsletterReceiver = $this->NewsletterReceivers->patchEntity($newsletterReceiver, $this->request->data);
            if ($this->NewsletterReceivers->save($newsletterReceiver)) {
                $this->Flash->success(__('The newsletter receiver has been saved.'));
                return $this->redirect('/');
            } else {
                $this->Flash->error(__('The newsletter receiver could not be saved. Please, try again.'));
            }
        }
        $this->set(compact('newsletterReceiver'));
        $this->render('/Pages/newsletter_subscribe');
    }

Validierungsfehler konnte man sich bei den alten CakePHP Versionen mit Hilfe der $this->ModelName->invalidFields() Funktion ausgeben. Das geht jetzt im Entity mit der Funktion $modelName->errors()