2011-03-12 23 views
6

tengo esto en add.ctp:CakePHP enviar un formulario a la acción correcta

<!-- File: /app/views/posts/add.ctp --> 

<h1>Add Post</h1> 
<?php 
echo $form->create('Post'); 
echo $form->input('title'); 
echo $form->input('body', array('rows' => '3')); 
echo $form->end('Save Post'); 
?> 

y esto en mi controlador:

function add(){ 
    if (!empty($this->data)) { 
     if($this->Post->save($this->data)){ 
      $this->Session->setFlash('Your post has been saved'); 
      $this->redirect(array('action' => 'index')); 
     } 
    } 
} 

Mi pregunta es ¿cómo sabe CakePHP que cuando los accesos de los usuarios enviar, para enviar "datos" a la función "agregar" en el controlador?

+0

¿Por qué no permitir que mi etiqueta PHP? Tengo PHP en ignorar. – stefan

+0

No he deshabilitado nada :) – benhowdle89

+0

extraño, lo agregué de nuevo;) – stefan

Respuesta

8

Por defecto, CakePHP enviará el formulario a la misma acción que lo muestra.

Se puede cambiar en la vista de la siguiente manera:

echo $form->create('Post', array('action' => 'whatever')); 
+1

Muestra Advertencia obsoleta en 2.x y 3.x –

+1

esta advertencia es para la última torta, reemplace la acción con url. Sigue la respuesta de @dav –

8

o si desea redirigir a otro controlador, así que usted puede utilizar este

echo $form->create('Post', array('url' => '/controller_name/action_name'));

0

De acuerdo con la sintaxis actualizada a continuación funcionará (CakePHP 2.4.x):

echo $this->Form->create('RegistrationsInout', array('action' => 'startroom')); 
0

para CakePHP 3.x

$this->Form->create('Post', ['url' => ['action' => 'post']]); 

Ver doc

Cuestiones relacionadas