Pregunta

Tengo una simple CakePHP site (1.2).Tengo una página donde usted puede editar y salvar a una Persona.Así que tengo una Persona modelo y el controlador.

Cada Persona tiene una o más comentarios, en el comentario de la tabla.Así que tengo un Comentario modelo, y tengo un hasMany asociación en mi Persona modelo para la Observación del modelo.La vista es un gran trabajo.

Mi pregunta es, en la vista de la Persona, que han agregar un botón de un comentario.Cómo este trabajo?Debo esperar a la Persona de controlador para incluir a guardar por el comentario de registro, o crear un comentario controlador y guardarlo fuera de la asociación para una persona?

Tengo experiencia con PHP, pero nuevo a la Torta.

Alguna idea?Creo que me estoy perdiendo algo obvio, pero no estoy seguro de qué hacer.Me siento como si fue PHP Me gustaría hacer referencia a la Person_id en mis agregar formulario de comentarios, y por lo tanto el uso de un controlador separado, pero me siento como tener un controlador para un Modelo simple es inútil, ya que los Comentarios son sólo editado en el contexto de un registro de Persona.

Ideas?

¿Fue útil?

Solución

Yo no soy un experto en CakePHP, pero todavía creo que tendría sentido para tener su propio controlador.De lo que recuerdo de uno de los CakePHP blog de tutoriales es, que usted necesita el enlace de los comentarios y el post en el comentario de la modelo.Esta es la parte del código que tengo de ella:

class Comment extends AppModel
{
  var $name = ‘Comment’;
  var $belongsTo = array(‘Person’);
}

Y entonces usted necesita un controlador (comments_controller.php):

class CommentsController extends AppController
{
  var $name = ‘Comments’;
  var $scaffold;
}

Algunos de SQL:

CREATE TABLE comments (
  id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  author VARCHAR(50),
  comment TEXT,
  person_id INT,
  created DATETIME DEFAULT NULL,
  modified DATETIME DEFAULT NULL
);

El $scaffold crea una aplicación CRUD para usted, así que cuando usted vaya a /comentarios en su navegador usted puede cpalpitaciones, read, update y delete comentarios.Así, como se puede ver, no hay mucho que participan aquí.Todo lo que usted necesita es su base de datos de tablas y un poco de lógica para proporcionar person_id.

Para guardar un comentario (en su Persona/vista):

<h2>Add comment</h2>
<?php
echo $form->create(‘Comment’, array(‘action’=>‘add/’.$person[‘Person’][‘id’]);
echo $form->input(‘author’);
echo $form->input(‘content’);
echo $form->submit(‘Add comment’);
echo $form->end();
?>

Y en su CommentsController:

function add($id = NULL) {
  if (!empty($this->data)) {
    $this->data['Comment']['person_id'] = $id;
    $this->data['Comment']['id'] = '';
    if ($this->Comment->save($this->data)) {
      $this->Session->setFlash('Commented added');
      $this->redirect($this->referer());
    }
  }
}

Así que, básicamente, sobrescribir el estándar agregar la acción, que la Torta añade por sí mismo.Espero que tenga sentido ahora.También, usted puede ser que necesite una ruta así se recoge /comentarios/agregar/ID.Yo no sé acerca de esta parte.:)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top