0

我有三个模型

  1. 用户
  2. 团体
  3. 订阅

在订阅表中,我有三个字段

  1. ID
  2. 用户身份
  3. group_id

我想要的是,我想在这里显示每个组的所有订阅者的列表( /groups/viewcourse/id )

组控制器:

public function viewcourse($id=NULL)
{
    $this->set('viewcourse', $this->Group->read(NULL,$id));
    $this->set('course', $this->Group->find('all', array('conditions'=>array('Group.id'=>$id))));


     $this->set('allnotes', $this->Group->Note->find('all', array(
    'conditions'=>array('Note.group_id' => $id),'order' => array('Note.created DESC'))))
}

用户控制器:

public function subscribers()
{
$subscribers = $this->User->Subscription->find('all',array(
  'conditions'=>array(
  'Subscription.group_id'=>26)
  )
 );
}

现在在 UsersController 中,我想以某种方式从 URL 检索组 ID 以放置它而不是 26,以便我可以显示订阅该特定组或组 26 的用户列表。

我想到的唯一方法是从 URL 中获取 id。

我尝试的是添加 $this->params['pass'][0] 到 UsersController (订阅者操作​​),但它再次没有从 viewcourse 中获取 id,因为它只会从订阅者操作​​中传递 id,它是 Null 并且没有利用。我想要来自 /groups/viewcourse/id 的 id。

4

2 回答 2

0

Just pass another param along with your link helper to the controller. in the view:

<?php echo $this->Html->link('Subscribers', array('controller'=>'users', 'action'=>'subscribers', 'group'=>$viewcourse['Group']['id'])); ?>

and retrieve the params in your subscribers function with

 $group_id = $this->params['named']['group'];
于 2012-11-28T19:34:16.060 回答
0

您应该将检索数据库信息的函数放在模型中,而不是控制器中——然后您可以从任何控制器访问它们的逻辑和数据。

示例代码:

//GroupsController
public function viewcourse($id=NULL)
{
    //...
    $this->loadModel('Subscription');
    $subscribers = $this->Subscription->getAllByGroupId($id);
    //...
}

//Subscription model
public function getAllByGroupId($groupId = null) {
    if(empty($groupId)) return false;
    return $this->findAllByGroupId($groupId);
}
于 2012-11-28T20:02:07.857 回答