Retrollamadas

Componentes

Las siguientes retrollamadas son soportadas por componentes por CakePHP

  • initialize: Llamada antes de Controller::beforeFilter()
  • startup: Llamada despues de Controller::beforeFilter() y antes de la accion del controlador.
  • beforeRender: Llamada despues de Controller::beforeRender(), despues de que la clase de vista es llamada y antes de Controller::render()
  • shutdown: Llamada despues de Controller::render() y antes de que la salida sea impresa al navegador.

Codigo

<?php
class ExampleComponent extends Component {

    //called before Controller::beforeFilter()
    public function initialize(&$Controller, $settings = array()) {
        // saving the controller reference for later use
        $this->Controller =& $Controller;
    }

    //called after Controller::beforeFilter()
    public function startup(&$Controller) {
    }

    //called after Controller::beforeRender()
    public function beforeRender(&$Controller) {
    }

    //called after Controller::render()
    public function shutdown(&$Controller) {
    }

    //called before Controller::redirect()
    public function beforeRedirect(&$Controller, $url, $status = null, $exit = true) {
    }

    public function redirectSomewhere($value) {
        // utilizing a controller method
        $this->controller->redirect($value);
    }

}

Lee mas acerca de los componentes en http://book.cakephp.org/2.0/en/controllers/components.html.

Helpers (Auxiliares)

Las siguientes retrollamadas son soportadas por Helpers por CakePHP:

  • beforeRender: Llamada antes de que el archivo de vista sea reproducido.
  • afterRender: Llamada despues que el archivo de vista es reproducido pero antes que la distribucion sea reproducida.
  • beforeLayout: Llamada antes de que la distribucion sea reproducida.
  • afterLayout: Llamada despues de que la distribucion es reproducida.

Retrollamadas adicionales por Croogo para una mejor integracion.

  • afterSetNode: Llamada despues de LayoutHelper::setNode(). Un buen lugar para modificar el contenido de los nodos.
  • beforeNodeInfo: Llamada antes de LayoutHelper::nodeInfo().
  • afterNodeInfo: Llamada despues de LayoutHelper::nodeInfo().
  • beforeNodeBody: Llamada antes de LayoutHelper::nodeBody().
  • afterNodeBody: Llamada despues de LayoutHelper::nodeBody().
  • beforeNodeMoreInfo: Llamada antes de LayoutHelper::nodeMoreInfo().
  • afterNodeMoreInfo: Llamada despues de LayoutHelper::nodeMoreInfo()

Codigo

<?php
class ExampleHelper extends AppHelper {

    public $helpers = array(
        'Html',
        'Layout',
    );

    public function beforeRender() {
    }

    public function afterRender() {
    }

    public function beforeLayout() {
    }

    public function afterLayout() {
    }

    public function afterSetNode() {
        // field values can be changed from hooks
        $currentTitle = $this->Layout->node('title');
        $modifiedTitle = $currentTitle . ' [Modified by ExampleHelper]';
        $this->Layout->setNodeField('title', $modifiedTitle);
    }

    public function beforeNodeInfo() {
        return '<p>beforeNodeInfo</p>';
    }

    public function afterNodeInfo() {
        return '<p>afterNodeInfo</p>';
    }

    public function beforeNodeBody() {
        return '<p>beforeNodeBody</p>';
    }

    public function afterNodeBody() {
        return '<p>afterNodeBody</p>';
    }

    public function beforeNodeMoreInfo() {
        return '<p>beforeNodeMoreInfo</p>';
    }

    public function afterNodeMoreInfo() {
        return '<p>afterNodeMoreInfo</p>';
    }

}

Lee mas acerca de los helpers en http://book.cakephp.org/2.0/en/views/helpers.html.