CakePHP: HelperComponent
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.
7 comments
Trackbacks/Pingbacks
- cakebaker » How to use a helper in a controller - [...] 2007-08-13: m3nt0r has published a helper component in his blog which allows you to use a helper like a ...

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()
thanks for the hint! Didn't know about nested arrays within the components array. CakePHP rocks!
best,
Kjell
thanks
Iain
Btw: Using the code as it is, the example should look like this:
$example = $this->NumberHelper->precision( 100 . 1151933, 2 );