2012-11-28 55 views
0

我有三個型號從URL獲取ID在另一個行動

  1. 用戶
  2. 集團
  3. 認購

在訂閱表格我有三個領域

  1. ID
  2. user_id說明
  3. GROUP_ID

我想那是什麼,我想顯示每個組的所有用戶在這裏的列表(/組/ 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方式校驗組ID來放置它,而不是26,這樣我可以顯示訂閱這個特定的羣體或團體26

的唯一方式的用戶列表我腦子裏想到的是從URL中獲取ID。

我試過的是向UsersController(訂閱者動作)添加$ this-> params ['pass'] [0],但是它再次沒有從viewcourse獲取id,因爲它只會傳遞來自訂閱者動作的id無用,無用。我想要/ group/viewcourse/id中的id。

+0

有沒有在你看來一個鏈接,用戶在點擊才能到用戶從viewcourse查看?或者你在做某種自動重定向? –

+0

是的,有一個訂閱按鈕。當用戶點擊它時,它將用戶重定向到訂閱者視圖,並將訂閱添加到訂閱表中的組ID。 –

回答

0

只需將另一個參數和您的鏈接助手傳遞給控制器​​即可。 視圖:

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

和檢索您的用戶的PARAMS與

$group_id = $this->params['named']['group']; 
+0

但我在其中創建訂閱者操作​​的控制器是UsersController,我想要檢索那裏的值而不是SubscriptionsController –

+0

只需將控制器更改爲鏈接助手中的用戶即可。我更新了我的代碼。 –

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