2013-03-19 2 views
1

Вот что я пытаюсь сделать. Я хочу, чтобы мои левые меню были групповыми. Если я дал Разрешение группе просматривать меню, то она должна быть видимой для этой группы.Функция CodeIgniter не работает

Перед тем, как перейти к подробным вопросам. Я хочу показать вам, что я сделал до сих пор, и где я применяю это конкретное меню группы «Разрешения».

Вот базовый контроллер, названный My_Controller.php в основной папке.

My Main Контроллер расширен с My_Controller.

My_Controller Кодирование.

<?php 
/** 
* Created by JetBrains PhpStorm. 
* User: SBPS 
* Date: 3/13/13 
* Time: 4:55 PM 
* To change this template use File | Settings | File Templates. 
*/ 

class My_Controller extends CI_Controller{ 
    function __construct(){ 
     parent::__construct(); 
    } 
    public function UserGroups(){ 
     $UserID=1; 
     $this->load->model('ui_components/Left_menu_cpanel'); 
     $Groups=$this->Left_menu_cpanel->get_user_groups($UserID); 
     return $Groups; 
    } 
} 

Это мой Main Контроллер.

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Main extends My_Controller { 
    /* 
    * Main Controller 
    * Designed By: Kifayat Ullah 
    * Purpose: To work as a main Control Panel for the Authenticated users 
    */ 


    public function index() { 
     if(!$this->session->userdata('UserID') 
     || $this->session->userdata('UserID')<=0){ 
      redirect('user_management/login_form'); 
     }// end of session check 
     // Prepare the LeftHandSide Menu Object and Send it to the View for Display 
     $this->load->model('ui_components/Left_menu_cpanel'); 
     $UserGroups=$this->UserGroups(); 

     // retrive menu List object 


     // Pass the name of the view that you want to load 
     $data['main_container']='tamplet_includes/tamplet_main_container_tags'; 
     $data['UserGroups']=$UserGroups; 
     //$data['UserGroups']=$this->UserGroups(); 
     $this->load->view('SystemView',$data); 

     //var_dump($UserGroups); 
    } 

    function UserAdditionForm(){ 

     echo 'hello'; 
    } 

} 

/* End of file welcome.php */ 
/* Location: ./application/controllers/welcome.php */ 

Теперь его поворот моделей.

Моя базовая модель с именем My_Model.php в основной папке. Мой left_menu_cpanel распространяется от My_Model.php.

My_Model.php Базовая модель файла:

<?php 
/** 
* Created by JetBrains PhpStorm. 
* User: SBPS 
* Date: 3/19/13 
* Time: 3:13 PM 
* To change this template use File | Settings | File Templates. 
*/ 

class My_Model extends CI_Model{ 
    function __construct(){ 
     parent::__construct(); 
    } 

    public function get_user_groups($UserID){ 
     //$UserID=1; // We will Update this UserID Later 
     $this->load->helper('security'); 
     $this->db->select('*'); 
     $this->db->from('sys_user_accounts'); 
     $this->db->join('sys_user_groups_memberships', 'sys_user_groups_memberships.UserID = sys_user_accounts.UserID', 'INNER'); 
     $this->db->where('sys_user_accounts.UserID', $UserID); 
     $this->db->join('sys_user_groups', 'sys_user_groups.GroupID = sys_user_groups_memberships.GroupID', 'INNER'); 
     $query = $this->db->get(); 

     return $query->result(); // return all forms list 

    } 
} 

left_menu_cpanel.php файл Модель:

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Left_menu_cpanel extends My_Model { 
    function __construct() 
    { 
     parent::__construct(); 
    } 

    // This function returns true if a user authenticaton is successfull 
    public function get_left_menu_items($GroupID){ 
     //$GroupID=1; // We need update this to a Group Array from the users permissions list 
     $this->load->helper('security'); 
     $this->db->distinct(); 
     $this->db->select('*'); 
     $this->db->from('sys_group_roles_forms_view'); 
     $this->db->where('GroupID', $GroupID); 
     $query = $this->db->get(); 

     return $query->result(); // return all forms list  

    }// end of authenticate function 
}//end of class 
/* End of file left_menu_cpanel.php.php */ 
/* Location: ./application/models/user_management/left_menu_cpanel.php.php */ 
?> 

Моя таблица Структура sys_group_roles_forms_view enter image description here

My sys_user_groups enter image description here

Пользователь может принадлежать многим группам, и группа может иметь много пользователей.

Теперь, как я думаю, что я отправил все детали,

Так что мой вопрос в том, что если я дал разрешение на группу, чтобы просмотреть определенную вкладку, так что если я, что разрешение дается двум или нескольким группам, то Одна вкладка должна появляться только один раз.

Но как пользователь принадлежит к трем различным группам, поэтому по этой причине он повторяет вкладку 3 раза. Но я хочу это только один раз.

Под Tab я имею в виду левое меню, повторяющееся три раза. enter image description here

Я попытался найти в Сети решение, и я получил решение для него отдельной функции. Но эта функция не работает, как я пытался.

Пожалуйста, позвольте мне понять, почему эта функция не работает, и если она будет работать в моем сценарии, то как применить эту функцию?

ответ

2

Distinct работает во всей строке, включая идентификатор группы, имя группы и т. Д.Вам нужно выбрать только те столбцы, которые вам нужны (избегайте select *) и используйте вместо этого метод group_by().

+0

точно. но я должен был замедлить :-) – Natrium

+0

Пожалуйста, можете ли вы объяснить, как использовать group_by() в моем запросе выше? –

+0

Я использовал group_by ('GroupID'); , но это бесполезно. Тем не менее, я получаю ту же проблему? Как решить? –

Смежные вопросы