CakePHP: Fatal error: Call to undefined method stdClass::send()

Wer in das Verlangen kommt, die Email-Component von CakePHP nutzen zu wollen, sollte sich stets eines Schusselfehlers bewußt sein. Die Email-Component bindet man wie gewöhnlich über

$components = array('Email');

in den jeweiligen Controller ein. Wer jedoch bei ‘$components’ das ‘s’ vergisst (Schusselfehler) erhält die im Titel dargestellte Fehlermeldung.

CakePHP: Überprüfung, ob ein User eingeloggt ist…

Um beispielsweise den “Login”-Link in einen “Logout”-Link wechseln zu lassen, sobald der Nutzer eingeloggt ist, braucht man von der Auth-Komponente irgendeine Rückmeldung über den Status. Eine Methode existiert dafür per se nicht. Die Methode

Auth->user()

ist jedoch eigentlich eine Wrapper-Methode für die Session

Auth.User

Daher kann man den Weg über die Session gehen und in Controllern mit der Session-Component und den Views (und damit auch im Layout – falls notwendig) mit dem Session-Helper arbeiten:

In Controllern sieht die Überprüfung daher folgendermaßen aus. Ist der Nutzer eingeloggt, liefert die Methode true

$this->Session->check('Auth.User.id');

In Views muss es so gehandhabt werden:

$session->check('Auth.User.id');

Der Pages_Controller

Mit Hilfe des im Core enthalten Pages_Controller ist es möglich, die verschiedenen Helper auch für die statischen Seiten in der Anwendung einzubinden.

Wichtig ist, dass keine Änderungen im Core vorgenommen werden sollten, so dass man CakePHP auch weiterhin updaten kann.

Also einfach den Pages_Controller aus cake/libs/controller kopieren und in app/controller einfügen. Wenn CakePHP den Pages_Controller dort findet, wird auf diesen zurückgegriffen.

Nun kann man hier z.B. standardmäßig den Javascript und Ajax Helper einbinden.

/**
 * Default helper
 *
 * @var array
 * @access public
 */
	var $helpers = array('Html', 'Javascript', 'Ajax');