2010-12-10 5 views
1

In vielen meiner Kuchen-Apps habe ich Shells, die über Cron und die Kuchen-Konsole aufgerufen werden, und ich frage mich, ob ich diese Methoden auf "private" Weise beschränken kann, so dass sie NUR von der Konsole aufgerufen werden können? Zum Beispiel, sagen sie, ich habe dies in meiner Schale:CakePHP: Controller-Methode auf Shell beschränken?

$this->requestAction(array('controller' => 'reviews', 'action' => 'generateReports'));

Wie kann ich die „generateReports“ beschränken Aktion eine „Shell nur“ Methode zu sein? Weil ich auch die Methode in meinem Browser aufrufen könnte, indem ich gehe: http://site.url/reviews/generateReports
Und so nützlich wie dies für das Debuggen sein kann, könnte es in einer Produktionsumgebung gefährlich sein.

Wenn ich die Methode privat mache, d. H. _generateReports, dann wird es der Shell nicht erlaubt, sie auszuführen. Irgendwelche Ideen? Ich denke, es sollte eine einfache Lösung dafür geben, aber ich konnte keine finden oder eine ähnliche Frage gestellt. Vielen Dank!

Antwort

1

Wenn Ihre Aktion nur vom Server ausgeführt werden soll, warum dann die Aktion innerhalb eines mit dem Web zugänglichen Controllers aufbauen?

Wenn Sie möchten, dass nur die CakeShell diese Methode ausführt, sollte die Aktion nur als CakeTask erstellt werden.

+0

Irgendwie war mir das Konzept der CakeTasks entgangen. Scheint perfekt - danke! – kaptron