2011-07-04 9 views
0

私はsymfony 1.4.11をDoctrineで使用します。私は私のサイトに私的なメッセージを持っています。そして、私は可能性を作りたい、そのユーザーはメッセージのために "返信する"ことができます。私は "edit"メソッドを変更しようとしますが、これは良い考えではありません。 ?今私はsymfonyフォームのメッセージに "返信"します

$this->forward404Unless(
    $messages = Doctrine_Core::getTable('Messages')->find(array($request->getParameter('id'))), 
    sprintf('Object messages does not exist (%s).', $request->getParameter('id')) 
); 

$messages->setMessage('') ; 
$messages->setTitle('Re:'.$messages->getTitle()) ; 
$messages->setRecipientId($messages->getSenderId()) ; 
$this->form = new MessagesForm($messages); 

を持っている。しかし、それは新しいメッセージを作成していない、それだけで編集し、それを作る方法...

答えて

3

返信アクションの追加:

public function executeReply(sfWebRequest $request) 
{ 
    $originalMessage = Doctrine_Core::getTable('Messages')->find(array($request['id'])); 
    $this->forward404Unless($originalMessage, sprintf('Object messages does not exist (%s).', $request['id'])); 

    $reply = new Message(); 
    $reply->setTitle('Re:'.$originalMessage->getTitle()); 
    $reply->setRecipientId($originalMessage->getSenderId()); 
    $this->form = new MessagesForm($reply); 
} 

その他の注意事項:

  • あなたは、既存の新しいアクションを変更し、元のメッセージIDが提供されるかどうかを確認するためのチェックを追加することができます。
  • オブジェクトを常に単数形で指定するのはデータベースの規約です。だからあなたのモデルはメッセージではなくメッセージと呼ばれるべきです。
  • コピーする元のメッセージのプロパティが多数ある場合は、新しいメッセージを作成する代わりにでcopyメソッドを使用できます。
  • dxbで説明したように自己リレーションを追加して、メッセージが返信先であるかどうかを追跡することができます。要件に応じてスレッドと応答の両方を追跡することができます。
+0

お返事ありがとうございました! – denys281

関連する問題