私はCakePHPでフレンドシップシステムを構築しています。フレンドシステムは、ユーザーとフレンドの2つのテーブルを使用しています。ユーザーはCakePHPフレンドシップシステム
(ID、ユーザ名、電子メール、パスワード)と友人(ID、user_from、user_to、状態)
ユーザーが友達になり、他のユーザーを要求し、これを保存する友人のテーブルにレコードを作成し、両方のユーザーIDを取得し、「要求済み」のステータスを設定します。ユーザーは、友情とステータスの変更を「承認済み」に受け入れるか、または友人関係をキャンセルすると、レコードがデータベースから削除されます。
要求するための例のリンクが見えると、ユーザーリストまたはユーザーの詳細ページにどちらか示すことができた:
<?php echo $this->Html->link('Add as Friend', array('controller'=>'friends','action'=>'add_friend',$user['User']['id'])); ?>
質問1は、私は、このリンクの変更を行うことができる方法でありますユーザーにリクエストがあった場合や既に友だちの場合は、キャンセルリクエストリンク?
このリンクをクリックすると、コントローラに以下の方法に対応しています
function add_friend ($id)
{
if(!empty($this->data))
{
$this->Friend->Create();
if($this->Friend->save($this->data))
{
$this->Session->setFlash('Friendship Requested');
$this->redirect(array('controller'=>'users','action'=>'login'));
}
}
}
だから我々はuser_to
なりますメソッドにIDを渡しているとし、「user_from」は、現在のユーザーでログインする必要がありますステータスを「要求済み」に設定します。 質問2私はこれを行う方法ですか?また、そのメソッドを呼び出して複数のレコードを作成することをユーザーが防ぎ、既に友情を要求しているというメッセージを表示するにはどうすればよいですか。
次の方法は次のとおりです。
function accept_friendship ($id)
{
$this->Session->setFlash('Friendship Accepted');
$this->redirect(array('controller'=>'friends','action'=>'index'));
}
}
}
質問3:しかし、再び、私は、レコードのステータスを変更し、メソッドが呼び出されたときに友人としてユーザーをマークだろうかへと困惑しています。また、同じレコードで複数回呼び出されないようにする必要があります。あなたが最初の方法を見ることができるように表示しているユーザーのIDを必要とし、その後、第二の方法は、現在使用されます
function users_friends($id)
{
$this->set('friends', $this->Friend->find('all'));
}
function my_friends()
{
$this->set('friends', $this->Friend->find('all'));
}
:
最終ビットは、ユーザーまたは他のユーザーのために友人をリストされログインしたユーザーID。 質問4:これを使ってそのユーザーの友達を一覧表示するにはどうすればよいですか?
これで私が正しい軌道に乗るのを助けることができれば、私は中止に踏み切り、その4つのことをどうやってやるのか分からず、助けてくれるようにCakePHPを学ぼうとしているので、非常に感謝しています。ありがとう
EDIT:ユーザーが確認したフレンドリクエストに関する情報を隠しフィールドで表示すると、それが発生することがありますが、これは理想的ではありません。実際には、私は関数を実行してリダイレクトをまっすぐにしたいと思います。思ったことはありません!
ありがとうございます – Cameron
これは本当に別の質問に分割する必要があります – Ross