public function getElement($name, $data = array(), $options = array())
{
$options = array_merge(array('subDir' => true), $options);
if (isset($options['plugin']) && !$options['plugin']) {
unset($options['plugin']);
}
/*** beforeElement ***/
$event = $this->dispatchEvent('beforeElement', array('name' => $name, 'data' => $data, 'options' => $options), array('layer' => 'View', 'class' => '', 'plugin' => ''));
if ($event !== false) {
$options = $event->result === null || $event->result === true ? $event->data['options'] : $event->result;
}
/*** Controller.beforeElement ***/
$event = $this->dispatchEvent('beforeElement', array('name' => $name, 'data' => $data, 'options' => $options), array('layer' => 'View', 'class' => $this->_View->name));
if ($event !== false) {
$options = $event->result === null || $event->result === true ? $event->data['options'] : $event->result;
}
if ($options['subDir'] === false) {
if (!$this->_subDir && $this->_View->subDir) {
$this->_subDir = $this->_View->subDir;
}
$this->_View->subDir = null;
} else {
if ($this->_subDir) {
$this->_View->subDir = $this->_subDir;
}
}
$out = $this->_View->element($name, $data, $options);
/*** afterElement ***/
$event = $this->dispatchEvent('afterElement', array('name' => $name, 'out' => $out), array('layer' => 'View', 'class' => '', 'plugin' => ''));
if ($event !== false) {
$out = $event->result === null || $event->result === true ? $event->data['out'] : $event->result;
}
/*** Controller.afterElement ***/
$event = $this->dispatchEvent('afterElement', array('name' => $name, 'out' => $out), array('layer' => 'View', 'class' => $this->_View->name));
if ($event !== false) {
$out = $event->result === null || $event->result === true ? $event->data['out'] : $event->result;
}
return $out;
}