Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => PHP => Mensaje iniciado por: geshiro en 23 Octubre 2016, 03:20 AM

Título: ¿Cómo puedo conseguir mi entrada JSON casa controler controler?(codeigniter)
Publicado por: geshiro en 23 Octubre 2016, 03:20 AM
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>
Título: Re: ¿Cómo puedo conseguir mi entrada JSON casa controler controler?(codeigniter)
Publicado por: [u]nsigned en 26 Octubre 2016, 16:09 PM
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...
Título: Re: ¿Cómo puedo conseguir mi entrada JSON casa controler controler?(codeigniter)
Publicado por: geshiro en 30 Octubre 2016, 00:17 AM
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