Controladores.
- Actúa como intermediario entre el requerimiento del usuario y, los modelos, las vistas y otros recursos que generan su respuesta.
- Su clase base es Controller.
- Su identificador empieza con minúsculas: user.
- El nombre de su clase empieza con mayúsculas: User.
- El nombre de archivo coincide con el identificador y la extensión .php.
- Se almacenan bajo application/controllers. Es posible agrupar controladores en subdirectorios, estas rutas se deberán ver reflejadas en el requerimiento del usuario.
- Si se define un constructor para el controlador: __construct para PHP5, su primera instrucción deberá ser invocar al constructor padre: parent::Controller().
- Las acciones (o funciones) corresponden con los métodos del controlador y es allí donde se implementa su lógica.
- Los nombres de las acciones comienzan con minúsculas.
- Las acciones pueden recibir información adicional del requerimiento de usuario a través de sus parámetros.
- El controlador por defecto es welcome, esto personalizarse modificando el valor de $route['default_controller'] en application/config/routes.php.
- La acción por defecto es index.
- Los controladores y las acciones por defecto son utilizadas si el usuario no las referencia explícitamente en su requerimiento.
- Para definir métodos privados en el controlador que no serán tomados en cuenta como acciones, deberán declararse como private o protected (PHP5) y su nombre deberá empezar por un guión-bajo (PHP 4 y 5).
- Es posible personalizar la manipulación de las acciones de un controlador sobreescribiendo el método _remap($method) del último. No es frecuente hacerlo.
- Es posible manipular, como postprocesar, la información que va a ser enviada de regreso al usuario desde un controlador sobreescribiendo su método _output($output). No es frecuente hacerlo.
[source='php']
// Archivo application/controllers/user.php
class User extends Controller
{
public function __construct()
{
parent::Controller();
// Constructor del controlador.
}
public function index()
{
// Acción por defecto.
}
public function changeName($firstName, $lastName)
{
// Acción con parámetros enviados desde el requerimiento.
}
private function _myInternalMethod()
{
// Método privado no acción.
}
}
[/source]
Vistas.
- Se encarga de preparar y organizar la información resultante que será presentada al usuario como respuesta a su requerimiento.
- Son archivos con contenido XHTML y PHP.
- No son invocados directamente, son utilizados por los controladores.
- El nombre de su identificador puede ser arbitrario.
- El nombre del archivo será su identificador junto con la extensión .php.
- Se almacenan bajo application/views. Es posible agrupar vistas en subdirectorios, estas rutas se deberán ver reflejadas en su llamado desde el controlador.
- Para cargar una vista desde el controlador: $this -> load -> view('ruta/archivo'). La extensión de la vista puede omitirse si se utilizó la extensión por defecto.
- Este método envía inmediatamente el contenido de la vista procesada al usuario.
- Es posible enviar información desde el controlador hacia la vista modificando su carga: $this -> load -> view('ruta/archivo', $data).
- $data puede ser un arreglo relacional o un objeto. En el primer caso, las celdas del arreglo se convierten en variables de la vista siendo el índice de cada celda el nombre y el contenido su correspondiente valor de la variable. De igual manera ocurre en el segundo caso, convirtiéndose en variables de la vista a los atributos del objeto.
- Es posible cargar una vista y almacenarla en una variable para su posterior uso en lugar de enviarla directamente al usuario: $myView = $this -> load -> view('ruta/archivo', $data, true).
[source='php']
// Archivo application/controllers/user.php
class User extends Controller
{
public function index()
{
$data['title'] = "System Administration";
$data['suibtitle'] = "User management";
$this -> load -> view('user/index', $data);
}
}
// Archivo application/views/user/index.php
< ?php echo $subtitle; ?>
[/source]
Modelos.
- Representan a la lógica del negocio y la información del sistema.
- Su clase base es Model.
- Su identificador empieza con minúsculas: user.
- El nombre de su clase corresponde con el identificador empezando con mayúsculas y terminando con el postfijo _model: User_model.
- El nombre de archivo coincide con el nombre de la clase en minúsculas y la extensión .php: user_model.php.
- Se almacenan bajo application/models. Es posible agrupar modelos en subdirectorios, estas rutas se deberán ver reflejadas en el momento de invocarlos.
- Si se define un constructor para el modelo: __construct para PHP5, su primera instrucción deberá ser invocar al constructor padre: parent::Model().
- Para cargar un modelo desde el controlador: $this -> load -> model('ruta/Nombre_modelo'). Esto comúnmente se realiza en el constructor de la clase que lo utiliza para garantizar su uso a todo su largo.
- Después de cargado el modelo puede utilizarse de la siguiente manera: $this -> Nombre_modelo -> método().
- Es posible especificar el nombre del objeto donde se cargan los modelos: $this -> load -> model('ruta/Nombre_modelo', 'otroNombre'), esto permite acceder a él de la siguiente manera: $this -> otroNombre -> método().
- Un tercer parámetro enviado durante la carga de un modelo le permite a este autoconectarse a la base de datos del sistema: $this -> load -> model('ruta/Nombre_modelo', ", true).
- Es posible indicarle al framework que cargue automáticamente una lista de modelos al listarlos en el arreglo $autoload['model'] de application/config/autoload.php.
[source='php']
// Archivo application/controllers/user.php
class User extends Controller
{
function __construct()
{
parent::Controller();
$this -> load -> model('admin/user');
}
public function index()
{
$data['info'] = $this -> User -> miMetodo();
$this -> load -> view('user/index', $data);
}
}
// Archivo application/models/admin/user.php
class User_model extends Model
{
function __construct()
{
parent::Model();
}
public function miMetodo()
{
// Implementación de la lógica del negocio
}
}
[/source]
Requerimiento del usuario.
- El requerimiento del usuario incluye la información que encapsula su solicitud, así como todos los datos requeridos interpretarla.
- La información proviene desde dos fuentes: el URL (dirección) y el contenido POST (formularios).
- El URL por defecto sigue este formato: server.com/index.php/controller/action/data1/data2. Cada parte del URL es conocida como un segmento. Los segmentos controller y action corresponden con los identificadores del controlador y de la acción, incluyendo las rutas adicionales si se utilizaron, que son requeridos por el usuario.
- Los segmentos adicionales (data1 y data2) son pasados a la acción como parámetros del método.
- La información enviada a través de variables POST, como es el caso de los formularios, es recibida a través de la clase Input de la seiguiente manera: $this -> input -> post('nombreVariable', true). El segundo parámetro (booleano) indica si la variable debe ser o no pasada por el filtro XSS de contenido antes de ser accedida.
Enlaces.
- Model, View and Controller.
http://codeigniter.com/user_guide/overview/mvc.html - Controllers.
http://codeigniter.com/user_guide/general/controllers.html - Views.
http://codeigniter.com/user_guide/general/views.html - Models.
http://codeigniter.com/user_guide/general/models.html - URLs.
http://codeigniter.com/user_guide/general/urls.html
No hay artículos relacionados.




