Вот что я пытаюсь сделать. Я хочу, чтобы мои левые меню были групповыми. Если я дал Разрешение группе просматривать меню, то она должна быть видимой для этой группы.Функция 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
My sys_user_groups
Пользователь может принадлежать многим группам, и группа может иметь много пользователей.
Теперь, как я думаю, что я отправил все детали,
Так что мой вопрос в том, что если я дал разрешение на группу, чтобы просмотреть определенную вкладку, так что если я, что разрешение дается двум или нескольким группам, то Одна вкладка должна появляться только один раз.
Но как пользователь принадлежит к трем различным группам, поэтому по этой причине он повторяет вкладку 3 раза. Но я хочу это только один раз.
Под Tab я имею в виду левое меню, повторяющееся три раза.
Я попытался найти в Сети решение, и я получил решение для него отдельной функции. Но эта функция не работает, как я пытался.
Пожалуйста, позвольте мне понять, почему эта функция не работает, и если она будет работать в моем сценарии, то как применить эту функцию?
точно. но я должен был замедлить :-) – Natrium
Пожалуйста, можете ли вы объяснить, как использовать group_by() в моем запросе выше? –
Я использовал group_by ('GroupID'); , но это бесполезно. Тем не менее, я получаю ту же проблему? Как решить? –