¿Cómo puedo conseguir mi entrada JSON casa controler controler?(codeigniter)

Iniciado por geshiro, 23 Octubre 2016, 03:20 AM

0 Miembros y 1 Visitante están viendo este tema.

geshiro

Quiero recuperar mi JSON para mi controlador home porque quiero esos valores para mi menú basado en roles. Si hago esto con archivos separados  no funciona en  mi código. de view home Entonces, ¿qué es estoy haciendo mal con el? ¿Cómo se puede arreglar bien mostrando los valores correctos?


login controller:

Código (php) [Seleccionar]

<?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($id_module){
        if(
$this->session->userdata('log')){
            
$data $this->session->userdata('log');
            
$menu = array();
            
$seccions $this->module->get_rows();
            foreach (
$seccions as $index => $sección){
               
$modules $this->module->query("SELECT CONCAT('".$sección['id']."',storelte_modulo.id) AS id,CONCAT('".base_url('assets/img/sidebar')."','/',storelte_modulo.icon) as icon, 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 = $sección[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->data['fields'] = $menu;
          
$this->json($this->data);
          
$this->load->view('home',$this->data);
        }
    }
}



home controller:

Código (php) [Seleccionar]

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

class 
Home extends MY_Controller {

  public function 
__construct(){
    
parent::__construct();
    
$this->isLogged();
  }

  public function 
index(){
    
$data $this->session->userdata('log');
    
$data['module']  = "Home";
    
$this->load->view('header',$data);
    
$this->load->view('home',$data);
  }

}



view home

Código (html4strict) [Seleccionar]

<section class="sidebar">
     <!-- sidebar menu: : style can be found in sidebar.less -->
     <ul class="sidebar-menu">
        <li class="treeview">
         <a href="#">
           <img src="<?= base_url().'/assets/img/sidebar/items.png'?>" alt="" class="menu-icon"> <span>Inventory</span>
           <i class="fa fa-angle-left pull-right"></i>
         </a>
         <ul class="treeview-menu">
           <li><a href="<?=base_url('inventory/product');?>"><i class="fa fa-circle-o text-aqua"></i> Product</a></li>
         </ul>
       </li>

[u]nsigned

Es facil, si en tu controlador tenes algo como esto:

Código (php) [Seleccionar]

//Asigno las variable en $data, este siempre debe ser un array.
$data['usuario'] = array( 'nombre'=>'Facundo', 'apellido'=>'López' );
$data['texto'] = 'Hace mucho viento...';
//Cargo la vista pasandole $data
$this->load->view('home', $data);


Luego, en tu vista, cada variable del arreglo $data se convierte en una variable independiente, por ejemplo para mostrar las variables usuario y texto haríamos asi:

Código (php) [Seleccionar]

<p>Nombre: <?=$usuario['nombre']?></p>
<p>Apellido: <?=$usuario['apellido']?></p>
<p><?=$texto?></p>


Espero haberte ayudado...

No hay atajo ante la duda, el misterio se hace aquí...
Se hace carne en cada uno, el misterio es existir!

geshiro

eso ya lo tengo lo que quiero es pasar todo el menu porque me da este error


Código (php) [Seleccionar]

A PHP Error was encountered

Severity: Notice

Message: Undefined variable: fields

Filename: views/modules_view.php

Line Number: 3

Backtrace:

File: C:\xampp\htdocs\storeLTE\application\views\modules_view.php
Line: 3
Function: _error_handler

File: C:\xampp\htdocs\storeLTE\application\views\home.php
Line: 147
Function: view

File: C:\xampp\htdocs\storeLTE\application\controllers\Home.php
Line: 14
Function: view

File: C:\xampp\htdocs\storeLTE\index.php
Line: 315
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: Invalid argument supplied for foreach()

Filename: views/modules_view.php

Line Number: 3

Backtrace:

File: C:\xampp\htdocs\storeLTE\application\views\modules_view.php
Line: 3
Function: _error_handler

File: C:\xampp\htdocs\storeLTE\application\views\home.php
Line: 147
Function: view

File: C:\xampp\htdocs\storeLTE\application\controllers\Home.php
Line: 14
Function: view

File: C:\xampp\htdocs\storeLTE\index.php
Line: 315
Function: require_once