Als ich heute so durch meine RSS Subscriptions wanderte fand ich einen Artikel bei CakeBaker wie man in einem Controller einen Helper verwenden kann. Ich stimme natürlich zu, dass es nicht immer Sinn macht und eigentlich vermieden werden sollte, aber es gibt dennoch immer Bereiche wo es sinnvoll ist.
Ich finde den TimeHelper zum Beispiel auch sehr nützlich in einer Action bzw. in einem Controller. Grad wenn man mit externen Daten arbeitet und die das Unix Format verwenden, oder zeitbasierte Queries bilden will.
Die HelperComponent nimmt einfach das von mir festgelegte Property "actionHelpers" und lädt alle dort definierten Helper in den Controller unter selben Namen. Man kann also auf die Helper so zugreifen wie auf Components.
Das nur als Beispiel. Der Rest bleibt euch überlassen ;)
app/controller/compontents/helper.php
-
class HelperComponent extends Object {
-
var $controller;
-
-
function startup(&$controller)
-
{
-
$this->controller = $controller;
-
$this->pushHelpers();
-
}
-
}
-
-
function pushHelpers()
-
{
-
foreach($this->controller->actionHelpers as $helper) {
-
loadHelper($_helper);
-
$_helperClassName = $helper.'Helper';
-
$this->controller->{$helper} = new $_helperClassName();
-
}
-
}
-
}
Viel Spass damit.


November 13th, 2007 at 15:10
June 30th, 2008 at 12:40
October 22nd, 2008 at 04:37
class UsersController extends AppController {
var $name="Users";
var $components = array('Helper' => array('Number', 'Time'));
function index() {
$example = $this->Number->precision(100.1151933, 2);
// $example -> 100.11
}
}
And your component shall receive it as arguments on HelperComponent::initialize()
October 22nd, 2008 at 04:51
thanks for the hint! Didn't know about nested arrays within the components array. CakePHP rocks!
best,
Kjell
October 26th, 2008 at 03:42
November 4th, 2009 at 16:42
thanks
Iain