そのようなコールバックが「要素」に固有に存在するかどうかはわかりませんが、ソースコードを見ると、ビュー自体と同じメソッドView::element()
を使用して要素をレンダリングし、トリガーして実行する必要があります _render()
beforeRender()
afterRender()
カスタム ビュー クラスとカスタム コールバックの作成
カスタムの「ビュー」クラスを使用してメソッドをオーバーライドすることができelement()
ます。たとえば、独自の「カスタム」コールバックをヘルパーでトリガーすることができます。
このようなもの;
アプリ/ビュー/app_view.php
class AppViewView extends View {
/**
* custom 'element()' method, triggers custom
* before/aferRenderElement callbacks on all loaded helpers
*/
public function element($name, $params = array(), $loadHelpers = false)
{
$this->_triggerHelpers('beforeRenderElement');
$output = parent::element($name, $params, $loadHelpers);
$this->_triggerHelpers('afterRenderElement');
}
/**
* Names of custom callbacks
*/
protected $_customCallBacks = array(
'beforeRenderElement',
'afterRenderElement',
);
function _triggerHelpers($callback)
{
if (!in_array($callback, $this->_customCallbacks)) {
// it's a standard callback, let the parent class handle it
return parent::_triggerHelpers($callback);
}
if (empty($this->loaded)) {
return false;
}
$helpers = array_keys($this->loaded);
foreach ($helpers as $helperName) {
$helper =& $this->loaded[$helperName];
if (is_object($helper)) {
if (
is_subclass_of($helper, 'Helper')
&& method_exists($helper, $callback)
) {
$helper->{$callback}();
}
}
}
}
}
次に、AppController で使用する「view」クラスを指定します。
class AppController extends Controller {
public $view = 'AppView';
}