logo

WikiJuanan: ManualCakePHP ...

Inicio | Indice De Paginas | Ultimas Modificaciones | Ultimos Commentarios | Usuarios | Registrarse | Conectar:  Contraseña:  
Esto es una version antigua de ManualCakePHP de 2006-10-25 18:46:56..

Cake PHP?API Cake


Manual de Cake PHP 

Contenido

Controladores

Propiedades del controlador

$autoRender

Esta variable es la responsable de que las acciones de un controlador llamen o renderizen una vista después de terminar su ejecución. Por defecto es 'true', podríamos establecerla como 'false' para crear controladores ($var autoRender=false;) o acciones ($this->autoRender = false;) que no llamen a ninguna vista.

$name

Normalmente un controlador toma por defecto el modelo que corresponde a su nombre en singular. Si el controlador utiliza un modelo con nombre distinto o el nombre tiene un plural irregular utilizamos esta propiedad para establecerlo. Este recurso también resuelve problemas de nombres de modelos con Palabras Camello? en sistemas con PHP4.


La forma de uso es:
var $name = 'NombreDelModelo';

$uses

Si el controlador necesita más de un modelo utilizamos esta variable para indicarlo. Hay que incluir también el modelo que responde al nombre del controlador.


La forma de uso es
var $uses = array('Modelo1','Modelo2','Modelo3');

Funciones de controlador

Aunque en esta sección se describen las funciones más utilizadas en los Controladores de Cake, es conveniente consultar la api en http://api.cakephp.org// para una referencia completa

Interacción con las vistas

set($cadena_variable,$cadena_valor)

Sirve para pasar datos desde un controlador hacia una vista, en forma de variables, arrays, etc.


Por ejemplo:
$this->set('color','blue');


Ahora desde la vista podemos utilizar la variable $color que nos devolverá 'blue'.

render ($cadena_accion, $cadena_layout, $cadena_fichero)

Puede que no use esta función muy a menudo, puesto que la llamada a 'render' se produce automáticamente al final de la ejecución de cada acción de un controlador, renderizando la vista asociada al nombre de la acción. No obstante, puedes llamar a esta función para que renderize la vista en cualquier punto de la ejecución del controlador ( $this->render(); ).

Redireccionado (?)

flash($cadena_mensaje,$cadena_url, $entero_pausa)

Esta función muestra un $mensaje al usuario usando el layout flash (está en 'app/views/layouts/flash.thtml') durante el tiempo especificado en $pausa y luego envía al usuario a la página especificada en $url.


En el layout por defecto el usuario también puede pasar a la $url de destino pulsando en el hipervínculo asociado al propio mensaje.


Ejemplo:
$this->flash('La página se ha grabado correctamente', 'paginas/list', 10);

Otras funciones útiles

Aunque estas funciones son parte de la clase 'Object' de Cake están también disponibles desde el Controlador.

requestAction ($cadena_url, $array_extra)

Esta función llama a una acción de otro controlador, retornando datos o una vista renderizada. La $url es una URL tipo Cake (/nombrecontrolador/accion/parametros). Si el array $extra incluye una clave 'return', Auto Render? es establecido automáticamente a 'true' para la acción, o sea la vista será renderizada.


Conseguir datos desde un controlador es simple. Sólo tienes que usar requestAction en el controlador donde necesitas los datos.


<code>
// Este es nuestro sencillo controlador
class Usuarios Controller? extends App Controller?
{

function obtenerListaUsuarios()
{
return $this->Usuario->findAll();
}

}
</code>


Imagina que necesitamos crear una tabla mostrando los usuarios del sistema. En vez de duplicar código en otro controllador, podemos obtener los datos desde Usuarios Controller?::obtenerListaUsuarios() usando un requestAction().


<code>
class Productos Controller? extends App Controller?
{

function muestraUsuarioProductos()
{
$this->set('usuarios', $this->requestAction('/usuarios/obtenerListaUsuarios'));
// Ahora la variable $usuarios en la vista tiene los datos
// de Usuarios Controller?::obtenerListaUsuarios()
}

}
</code>


Si tienes un elemento no estático en tu aplicación que usas mu a menudo, podrías querer usar requestAction() para inyectarlo en tus vistas. Digamos que mejor que pasar sólo los datos desde Usuarios Controller?::obtenerListaUsuarios(), queremos realmente renderizar la vista de esa acción (que podría consistir en una tabla), dentro de otro controlador. Esto nos ahorra duplicar código de la vista.


<code>
class Programas Controller? extends App Controller?
{

function verTodo()
{
$this->set('tablaUsuario', $this->requestAction('/usuarios/obtenerListaUsuarios', array('return')));
// Ahora podemos hacer 'echo $tablaUsuario;' desde la vista de esta acción
// para ver la lista renderizada que esta disponible también desde /usuarios/obtenerListaUsuarios
}

}
</code>


Observa que las acciones llamadas desde requestAction() son renderizadas usando un diseño o layout vacío. De esta manera no tienes que preocuparte de diseños renderizándose dentro de otros diseños.


La función requestAction() es también de gran utilidad cuando usamos AJAX, donde un pequeño elemento de una vista necesita ser rellenado antes o durante un actualización AJAX.

Clases

Inflector

Se encarga de realizar conversiones entre nombre de modelos, vistas, controladores y ficheros. Transformando de plural a singular, de camel case a subrayado bajo, etc. Algunas de sus funciones son: pluralize, singularize, camelize, humanize o classify.
Más información: http://api.cakephp.org/class_inflector.html

HtmlHelper

HTMLHelper está incluido por defecto en cualquier controlador, pero si quermos usar otros helper tendremos que incluir también a 'Html' en el array que los carga.


var $helpers = array('Html','Ajax','Javascript');


Como todas las clases 'Helper' sus funciones se utilizan desde dentro de una vista, no desde el controlador, aunque se las referencie desde éste.

link

url($cadena_url, $boolean_return)

Busca la URL para una accioón especificada.


Devuelve una URL apuntando a una combinación de controlador y acción. Si $url está vacío devuelve la dirección del controlador y la acción actual.


La variable $return determina si la función debe devolver un valor o mostrarlo. Esto pasa por encima el valor de AUTO_OUTPUT.


Ejemplos:
$html->url('/productos/edit/92');
$html->url('/'); // Devuelve la url raiz de la aplicación.


Nota: no se debe confundir esta función con Html::link() que devuelve una etiqueta html completa para mostrar un hiperenlace.

Ficheros de configuración

bootstrap.php

Este fichero se carga automaticamente desde app/webroot/index.php después del bootstrap.php común a todos los proyectos de cake.


Este fichero es visible para toda la aplicación y se usa para:



$modelPaths = array('ruta completa modelos', 'segunda ruta completa modelos', 'etc...');
$viewPaths = array('ruta completa vistas', 'segunda ruta completa vistas', 'etc...');
$controllerPaths = array('ruta completa controladores', 'segunda ruta completa controladores', 'etc...');

Enlaces de interés

Web oficiales

Blogs

Más Webs

Articulos



No hay archivos en esta página. [Enseñar archivos/formulario]
No hay comentarios en esta pagina. [Enseñar comentarios/formulario]