我想显示具有权限的相应模块的菜单列表。我有我的模型和控制器,但我不知道如何传递它到我的主视图和显示它。可直接用于PHP或ajax。
控制器 <?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Login extends MY_Controller {
public function __construct(){
parent::__construct();
}
public function index(){
$data['module'] = 'Login';
$this->load->view('login',$data);
}
public function getAccess(){
if ($this->session->userdata('logged_in') == TRUE){
redirect('home');
}else{
$username = $this->security->xss_clean($this->input->post('username'));
$password = $this->security->xss_clean($this->input->post('password'));
$array = $this->user->login($username,$password);
if ($array[0] == 0) {
echo 0;
}else{
$data_session = array(
'id' => $array[0]['id'],
'name' => $array[0]['nombre'],
'last_name' => $array[0]['apellido'],
'type' => $array[0]['id_perfil'],
'logged_in' => TRUE
);
$this->session->set_userdata('log',$data_session);
}
}
}
public function logout(){
$this->session->sess_destroy();
redirect('login');
}
public function getModules($module_id){
if ($this->session->userdata('log')){
$data = $this->session->userdata('log');
$menu = array();
$seccions = $this->module->get_rows();
foreach ($seccions as $index => $seccion) {
//echo json_encode($seccion);
$modules = $this->module->query("SELECT concat('".$seccion['id']."',storelte_modulo.id) AS id, storelte_modulo.modulo AS VALUE,storelte_modulo.seccion_id,concat('".base_url()."',storelte_modulo.url) as url FROM storelte_modulo INNER JOIN storelte_modulo_perfil ON storelte_modulo_perfil.modulo_id = storelte_modulo.id WHERE seccion_id = $seccion[id] AND storelte_modulo_perfil.perfiles_id = $data[id] AND storelte_modulo_perfil.status = 1");
$seccions[$index]['data']= $modules;
if(!count($seccions[$index]['data']))
unset($seccions[$index]);
}
foreach($seccions as $item)
array_push($menu,$item);
$this->json($menu);
}
}
}
module_model
class Module extends CI_Model {
public function __construct(){
parent::__construct();
}
public function get_rows(){
$this->db->select('id,seccion');
$this->db->from('storelte_seccion');
return $this->db->get()->result_array();
}
public function query($query){
return $this->db->query($query)->result_array();
}
}
html将显示具有权限的模块
<div class="row">
<h3 class="text-center">Welcome to storeLTE, click a module below to get started!</h3>
<div class="home_module_list">
</div>
</div>
为了通过php编写模块列表,您必须将$menu数组传递给视图文件(html)。如果这样做,function getModules()
应该:
- 返回$menu数组,如果getModules()是从控制器 的另一个方法调用的
——或——
- 将数组直接传递给视图文件(对代码示例来说最简单的方法)。因此,在本例中,将控制器上的函数getModules()更改为:
然后在你的视图文件(modules_view.php)中你可以遍历$menu项:
<div class="row">
<h3 class="text-center">Welcome to storeLTE, click a module below to get started!</h3>
<div class="home_module_list">
<ul>
<?php
foreach($seccions as $session) {
echo '<li><a href="'. $session['url'] .'">'. $session['index'] .' - '. $session['id'] .' - '. $session['VALUE'] .'</a></li>';
}
?>
</ul>
</div>
</div>
…
如果你想通过ajax传递菜单,你必须在你的html文件中使用javascript,但首先你的函数getModules()应该echo
JSON数组(或你即将嵌入在"home_module_list"div中的html)。在这种情况下,我建议您给div一个id
。