Documentación GVHIDRA 3.1.5
Referencia de la Clase ActionController
Diagrama de herencias de ActionController
Object

Métodos públicos

 ActionController ($options)
 process ($mappings, $request)
 _processMapping ($mappings, $request)
 _processAction ($actionMapping, $actionForm)
 _processForward ($actionForward)

Campos de datos

 $_options
 $_actionMappings
 $_actions

Descripción detallada

The ActionController class represents the controller in the Model-View-Controller (MVC) design pattern. The ActionController receives and processes all requests that change the state of the application.

Generally, a "Model2" application is architected as follows:

  • The user interface will generally be created with either PHP pages, which will not themselves contain any business logic. These pages represent the "view" component of an MVC architecture.
  • Forms and hyperlinks in the user interface that require business logic to be executed will be submitted to a request URI that is mapped to the ActionController. The ActionController receives and processes all requests that change the state of a user's interaction with the application. This component represents the "controller" component of an MVC architecture.
  • The ActionController will select and invoke an Action class to perform the requested business logic.
  • The Action classes will manipulate the state of the application's interaction with the user, typically by creating or modifying classes that are stored as session attributes. Such classes represent the "model" component of an MVC architecture.
  • Instead of producing the next page of the user interface directly, Action classes will forward control to an appropriate PHP page to produce the next page of the user interface.

The standard version of ActionController implements the following logic for each incoming HTTP request. You can override some or all of this functionality by subclassing this class and implementing your own version of the processing.

  • Identify, from the incoming request URI, the substring that will be used to select an Action procedure.
  • Use this substring to map to the class name of the corresponding Action class (a subclass of the Action class).
  • If this is the first request for a particular Action class, instantiate an instance of that class and cache it for future use.
  • Optionally populate the properties of an ActionForm class associated with this ActionMapping and cache it for future use.
  • Call the perform() method of this Action class. Passing in the mapping and the request that were passed to the ActionController by the bootstrap.

The standard version of ActionController is configured based on the following initialization parameters, which you will specify in the options for your application. Subclasses that specialize this ActionController are free to define additional initialization parameters.

Autor:
Arnold Cano
Versión:
Id:
ActionController.php,v 1.28 2010-02-23 15:51:59 gaspar Exp

Definición en la línea 56 del archivo ActionController.php.


Documentación de las funciones miembro

_processAction ( actionMapping,
actionForm 
)

Ask the specified Action instance to handle this request.

private

Parámetros:
ActionMapping$actionMapping
ActionForm$actionForm
Devuelve:
ActionForward

Definición en la línea 144 del archivo ActionController.php.

        {
                $name = $actionMapping->getName();
                $type = $actionMapping->getType();
                $action = $this->_actions->get($name);
                if (!is_object($action)) {
                        if (!class_exists($type)) {
                                if($type=='')
                                        trigger_error("Se ha intentado ejecutar la accin '$name' y no est programada para la clase actual. Compruebe el fichero de la clase y el mappings.php de su aplicacin.");
                                else
                                        trigger_error("Se ha producido un error intentado ejecutar la accin '$name' de la clase '$type'. Compruebe el nombre de la clase y su accesibilidad (fichero include.php).");
                                return;
                        }
            //Guardamos la referencia del modulo si es la primera pantalla del modulo a la que accedemos.
            if(isset($_REQUEST['modActv'])){
                IgepSession::guardaVariable('global','modActv',$_REQUEST['modActv']);
                //Borramos el contenido de los paneles anteriores
                IgepSession::_borrarPanelesVisitados();
            }
            //Si el panel ya existe lo recuperamos de la Session   
            if(IgepSession::existePanel($type)&&(strpos($type,'gvHidraForm')===false)){
                $action = IgepSession::damePanel($type);                        
                if(method_exists($action,'regenerarInstancia'))
                        $action->regenerarInstancia('');
                else{
                        IgepSession::borraPanel($type);
                        IgepDebug::setDebug(PANIC,'Error al recuperar la instancia de '.$type.'. Puede deberse a un error en el constructor. Se crea una nueva instancia.');
                        $action = new $type();
                }
            }
            else{                               
                IgepDebug::setDebug(DEBUG_IGEP,'Creamos una instancia de la clase '.$type);
                $action = new $type();                
            }            
            if ($this->_options[_CACHE]) {
                   $this->_actions->put($name, $action);
            }
       }
       if(is_callable($this->_options[_ERROR_HANDLER]))
           set_error_handler($this->_options[_ERROR_HANDLER]);
       if(!$action->obj_errorNegocio->hayError())        
           $actionForward = $action->perform($actionMapping, $actionForm);
       else{           
           $action->obj_errorNegocio->limpiarError();
           unset($action);
           $actionForward = new ActionForward('IgepInicioAplicacion');
           $actionForward->_path = 'index.php?view=igep/views/aplicacion.php';
           //Borramos cualquier referencia a la clase en la SESSION
           IgepSession::borraPanel($type);
       }        
           if(is_callable($this->_options[_ERROR_HANDLER]))
               restore_error_handler();
           return $actionForward;
        }
_processForward ( actionForward)

Forward to the specified destination.

private

Parámetros:
ActionForward$actionForward

Definición en la línea 204 del archivo ActionController.php.

        {
                $salto ='';                                                             
                switch($actionForward->getName()){
                        case 'gvHidraValidationError':
                                $path='';                       
                                $claseManejadora = $actionForward->get('IGEPclaseManejadora');
                                $salto = "Location: index.php?view=igep/views/igep_regenerarVentana.php&IGEPpath=$path&IGEPclaseManejadora=$claseManejadora";                           
                                break;
                        case 'IgepOperacionOculto':
                                $path = $actionForward->getPath();        
                                $salto = "Location: $path";
                                break;
                        case 'IgepSaltoVentana':
                                $path = $actionForward->get('IGEPaccionDestinoSalto');        
                                $salto = "Location: $path";
                        break;
                        default:
                                $path = $actionForward->getPath();
                                //REVIEW: Toni PHRAME
                                /* La variable clase Manejadora no est definida, por tanto se podr eliminar.
                                */
                                $claseManejadora ='';
                                $salto ="Location: index.php?view=igep/views/igep_regenerarVentana.php&IGEPpath=$path&IGEPclaseManejadora=$claseManejadora";
                }
                header($salto);
        }
_processMapping ( mappings,
request 
)

Identify and return an appropriate ActionMapping.

private

Parámetros:
array$mappings
array$request
Devuelve:
ActionMapping

Definición en la línea 122 del archivo ActionController.php.

        {
                $name = $request[_ACTION];
                $mapping = $mappings[_ACTION_MAPPINGS][$name];
                $actionMapping = $this->_actionMappings->get($name);
                if (!is_object($actionMapping)) {
                        $actionMapping = new ActionMapping($name, $mapping);
                        if ($this->_options[_CACHE]) {
                                $this->_actionMappings->put($name, $actionMapping);
                        }
                }
                return $actionMapping;
        }
ActionController ( options)

Create a ActionController specifying the options.

public

Parámetros:
array$options

Definición en la línea 77 del archivo ActionController.php.

        {
                if (!is_array($options)) {
                        trigger_error('Invalid options file');
                        return;
                }
                $this->_options = $options;
                //initialize cache
                $this->_actionMappings = new HashMap();
                $this->_actions = new HashMap();
        }
process ( mappings,
request 
)

Process the request.

public

Parámetros:
array$mappings
array$request

Definición en la línea 95 del archivo ActionController.php.

        {
                if (!is_array($mappings)) {
                        trigger_error('Invalid mappings file');
                        return;
                }
                if (!is_array($request)) {
                        trigger_error('Invalid request');
                        return;
                }               
                //error_reporting($this->_options[_ERROR_REPORTING]);
                $actionMapping = $this->_processMapping($mappings, $request);
                //Creamos el ActionForm (un Hasmap sobre el request)
                $actionForm = new HashMap($request);
                $actionForward = $this->_processAction($actionMapping, $actionForm);
                if (is_object($actionForward)) {
                        $this->_processForward($actionForward);
                }
        }

Documentación de los campos

$_actionMappings

Definición en la línea 65 del archivo ActionController.php.

$_actions

Definición en la línea 69 del archivo ActionController.php.

$_options

Definición en la línea 61 del archivo ActionController.php.


La documentación para esta clase fue generada a partir del siguiente fichero: