No se puede redirigir por malos parametros de redirección.
Cake PHP? – Cake Log? – Cake Api? – Manual Cake PHP – Cake Avanzado? – Traduciendo Cake? – Cake News
Estamos haciendo la traducción oficial del manual en http://cakeforge.org/projects/translations/
El modelo es la 'M' del patrón de diseño MVC.
Su función es separar el dominio de la lógica de la presentación, aislando la lógica de la aplicación.
Para guardar los datos en tus modelos, necesitas proporcionar los datos que deseas almacenar. Los datos que se pasan a la función «save()" deben pasarse como un array en el siguiente formato:
$datosParaGuardar = array('NombreDelModelo' => array('campo1' => 'valor', 'campo2' => 'valor'))
La orden «save()" que utilizaremos desde el controlador para guardar los datos en el modelo, y de paso en la base de datos si procede, quedaría así:
$this->Nombre Del Modelo?->save($datosParaGuardar, $validar, $listaDeCampos);
En donde $validar puede tomar los valores 'true' o 'false' y $listaDeCampos debe contener la lista de campos que pretendemos salvar en forma de array.
$listaDeCampos = array('campo1','campo2')
Para conseguir que los datos pasados a tu controlador tengan este formato, lo más fácil es usar HTML Helper, ya que éste crea elementos de formulario con los nombres apropiados que necesita Cake.
$html->input('Modelo/nombrecampo');
Si no quieres hacer esto asegurate que los elementos de tu formulario tengan nombres como data[Nombre Modelo?][nombrecampo].
Los datos enviados desde el formulario son automáticamente formateados de forma correcta y almacenados en la variable "$this->data" dentro de tu controlador, por tanto salvar los datos desde un formulario web es algo instantaneo.
Para derivar una clase de otra en Cake, parece que no basta con la directiva extends al definir la clase, hay que añadir la línea «loadModule('ClasePadre');" antes de definir la clase, ahí va un ejemplo:
Otra forma de hacer esto sería: require_once dirname(FILE). DS . 'analysis.php';
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.
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';
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');
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
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'.
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(); ).
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);
Aunque estas funciones son parte de la clase 'Object' de Cake están también disponibles desde el Controlador.
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?
{
}
</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?
{
}
</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?
{
}
</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.
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.
Ejemplo de uso: $plural = Inflector::pluralize($singular);
Más información: http://api.cakephp.org/class_inflector.html
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.
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.
Es el encargado de lidiar con las variables de sesión.
startup (&$controller)
write ($name, $value)
read ($name=null)
del ($name)
delete ($name)
check ($name)
error ()
setFlash ($flashMessage, $layout= 'default', $params=array(), $key= 'flash')
flash ($key= 'flash')
renew ()
valid ()
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:
2006-11-04 16:17:49 | (6 Kb) | basic_concepts.xml | ||
2006-11-03 20:17:04 | (3 Kb) | intro.xml | ||
2006-11-04 17:15:00 | (3 Kb) | preface.xml |