Pergunta

Eu tenho um CakePHP site (1.2) simples. Eu tenho uma página onde você pode editar e salvar uma pessoa. Então, eu tenho um modelo Pessoa e controlador.

Cada pessoa tem nenhum ou mais comentários, na tabela de comentários. Então, eu tenho um modelo de comentário, e eu tenho uma associação hasMany no meu modelo de pessoa para o modelo de comentário. Ver está trabalhando muito.

A minha pergunta é, na Pessoa página vista, eu tenho um comentário botão Adicionar. Como deve ser esse trabalho? Devo esperar o controlador Pessoa para incluir uma gravação para o registro comentário, ou criar um comentário controlador e guardá-lo fora dela da associação para uma pessoa?

Eu sou experiente com PHP, mas novo para bolo.

Todas as idéias? Eu acho que eu apenas estou faltando algo óbvio, mas não tenho certeza do que fazer. Eu me sinto como se este fosse PHP eu faria referência ao Person_ID no meu formulário de comentário adicional, e, portanto, usar um controlador separado, mas eu sentir vontade de ter um controlador para um simples modelo é inútil, uma vez que apenas comentários são editados no contexto de uma Pessoa registro.

Idéias?

Foi útil?

Solução

Eu não sou um especialista em CakePHP, mas eu ainda acho que faria sentido ter o seu próprio controlador. Pelo que me lembro de fazer uma dessas CakePHP blogue tutoriais é que você precisa para ligar os comentários e o cargo no modelo de comentário. Esta é parte do código que eu tenho com isso:

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

E, em seguida, você precisa de um controlador (comments_controller.php):

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

Alguns 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
);

O $scaffold cria um aplicativo CRUD para você, então quando você vai para / comentários em seu navegador, você pode c reate, r ead, u pdate e comments> d

Para salvar um comentário (em sua Pessoa / view):

<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();
?>

E no seu 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());
    }
  }
}

Então, basicamente você substituir a ação add padrão, que bolo adiciona por si só. Esperança de que faz sentido agora. Além disso, você pode precisar de uma rota para que ele pega / comentários / add / ID. Eu não sei sobre esta parte. :)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top