在另一个操作中从URL获取ID

时间:2012-11-28 18:21:18

标签: php cakephp

我有三个模特

  1. 用户
  2. 订阅
  3. 在订阅表中,我有三个字段

    1. ID
    2. USER_ID
    3. GROUP_ID
    4. 我想要的是,我想在这里显示每个组的所有订阅者列表(/ groups / viewcourse / id)

      GroupsController:

      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'))))
      }
      

      UsersController:

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

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

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

      我尝试将$ this-> params ['pass'] [0]添加到UsersController(订阅者操作​​)但是它再次没有从viewcourse获取id,因为它只会传递来自订阅者动作的id空无所事事。我想从/ groups / viewcourse / id。

      中获取ID

2 个答案:

答案 0 :(得分:0)

将另一个参数与链接助手一起传递给控制器​​。 在视图中:

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

并使用

检索订阅者功能中的参数
 $group_id = $this->params['named']['group'];

答案 1 :(得分: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);
}