Helpers that are used in CakePHP are associated with the Presentation layers of application. Helpers basically contain presentational logic that are available to share between many views, elements, or layouts. We have different helpers used in CakePHP.
- FormHelper
- HtmlHelper
- JsHelper
- CacheHelper
- NumberHelper
- Paginator
- RSS
- SessionHelper
- TextHelper
Configuring and Using helpers
You have to enable helpers in CakePHP by making the controller aware of them. Each and every controller has a $helper property that basiacally lists the helpers to be made available in the view. If you want to enable a helper in your view, you have to add the name of the helper to the controller’s $helpers array
class UsersController extends AppController {
public $helpers = array('Form', 'Html', 'Js', 'Time');
}
Within an action you can also add helpers , so they will be accessible by only one action at a time in the controlller This also manage the processing power for other actions in the controller, which are not using helper.
class UsersController extends AppController {
public function hello() {
$this->helpers[] = 'Time';
}
public function mix() {
// The Time helper is not loaded here and thus not available
}
}
To enable helper for all controllers, you should add the name of the helper to the $helpers array in /app/Controller/AppController.php
class AppController extends Controller {
public $helpers = array('Form', 'Html', 'Js', 'Time');
}
Options can be passed to helpers and these options can further used to set set attribute values or modify behavior of a helper:
class AwesomeHelper extends AppHelper {
public function __construct(View $view, $settings = array()) {
parent::__construct($view, $settings);
debug($settings);
}
}
class AwesomeController extends AppController {
public $helpers = array('Awesome' => array('option1' => 'value1'));
}
To create aliased helpers in your views, there is one setting to use i.e className option. This feature is useful when you want to replace $this->Html or another common Helper reference with a custom implementation:
// app/Controller/PostsController.php
class PostsController extends AppController {
public $helpers = array(
'Html' => array(
'className' => 'MyHtml'
)
);
}
// app/View/Helper/MyHtmlHelper.php
App::uses('HtmlHelper', 'View/Helper');
class MyHtmlHelper extends HtmlHelper {
// Add your code to override the core HtmlHelper
}
0 Comment(s)