【问题标题】:CakePHP Private messaging systemCakePHP 私人消息系统
【发布时间】:2012-09-09 16:51:04
【问题描述】:

我只是想知道是否有人可以让我开始在 CakePHP 框架上编写私人消息系统。我的目标是类似于 Facebook 收件箱系统。当然不必那么复杂!

我目前有一个 AUTH 系统,用户可以登录和注销。

【问题讨论】:

  • 为什么每个人都反对这个......这不像我在要求代码,我只是想指出正确的方向......

标签: php cakephp private-messaging


【解决方案1】:

最简单的方法是创建一个至少包含五列的messages 数据库表:id、sender_id、recipient_id、subject、body。然后,您还可以添加所需的其他列,例如 created。

然后您可以按如下方式设置您的控制器:

<?php
class MessagesController extends AppController {

    public function inbox() {
        $messages = $this->Message->find('all', array(
            'conditions' => array(
                'recipient_id' => $this->Auth->user('id')
            )
        ));
    }

    public function outbox() {
        $messages = $this->Message->find('all', array(
            'conditions' => array(
                'sender_id' => $this->Auth->user('id')
            )
        ));
    }

    public function compose() {
        if ($this->request->is('post')) {
            $this->request->data['Message']['sender_id'] = $this->Auth->user('id');
            if ($this->Message->save($this->request->data)) {
                $this->Session->setFlash('Message successfully sent.');
                $this->redirect(array('action' => 'outbox'));
            }
        }
    }
}

显然,您需要充实此示例,并更改可能不适用于您的应用程序的任何内容。如果您也需要,您还需要添加检查用户是否与他们尝试发送消息的人是朋友。

【讨论】:

  • 我正在考虑将所有功能放入我的用户控制器中,让用户控制器只使用消息传递表。哪种方式更有效?
  • 最好的做法是为每个模型配备一个控制器。当您与messages 数据库表进行交互时,因此也与Message 模型交互,您通常会创建一个相应的MessagesController 类,其中包含创建、读取、更新和删除(CRUD)消息的方法。然后,如果需要,您可以使用 CakePHP 中的路由组件来更改路由。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-02
  • 2016-05-07
  • 2010-10-20
  • 2011-09-14
  • 2010-11-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多