Foros del Web » Programando para Internet » PHP » CodeIgniter »

Utilizar variable de otra funcion

Estas en el tema de Utilizar variable de otra funcion en el foro de CodeIgniter en Foros del Web. Tengo dentro del model una función que se llama get_menu y saco el campo idmenu y section cual su parent sea 0 La consulta MySQL ...
  #1 (permalink)  
Antiguo 08/03/2015, 12:55
 
Fecha de Ingreso: marzo-2012
Mensajes: 180
Antigüedad: 12 años, 8 meses
Puntos: 2
Utilizar variable de otra funcion

Tengo dentro del model una función que se llama get_menu y saco el campo idmenu y section cual su parent sea 0

La consulta MySQL
Código MySQL:
Ver original
  1. SELECT * FROM menus WHERE active = 1 AND parent = 0 ORDER BY menus.order ASC

Entonces lo que me gustaría seria guardar esa id en una variable y pasársela get_sub_menu para que saque los section de su padre. En el campo parent guardo el idmenu de donde pertenece.

No sé si me explique de todo bien. Gracias a todos.

Vista:
Código PHP:
<!DOCTYPE html>
<html lang="es">
    <head>
        <meta charset="utf-8">
        <title><?= $title ?></title>
    </head>
    <body>
        <h1>Menu</h1>
        <nav>
            <ul>
                <?php
                
foreach ($menu as $item):
                    
$url $item->idmenu '/';
                    
$url .= url_title(convert_accented_characters($item->section), '-'TRUE)
                    
?>
                    <li><?= anchor($url$item->section); ?></li>
                    <?php
                    
foreach ($submenu as $item2):
                        
$url2 $item2->idmenu '/';
                        
$url2 .= url_title(convert_accented_characters($item2->section), '-'TRUE)
                        
?>
                        <ul><li><?= anchor($url2$item2->section); ?></li></ul>
                        <?php
                    
endforeach;
                endforeach;
                
?>
            </ul>
        </nav>    
    </body>
</html>
Modelo:
Código PHP:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class 
Model_menus extends CI_Model {
    
    function 
__construct() 
    {
        
parent::__construct();
    }
    
    
// Recupera los apartados del menu
    
function get_menu() 
    {
        
$this->db->select('idmenu, section');
        
$this->db->where('active''1');
        
$this->db->where('parent''0');
        
$this->db->order_by('order''ASC');
        
$consulta $this->db->get('menus');
        return 
$consulta->result();
    }  
    
    
// Recupera los apartados del submenu    
    
function get_sub_menu($id_menu
    {
        
$this->db->select('idmenu, section');
        
$this->db->where('active''1');
        
$this->db->where('parent'$id_menu);
        
$this->db->order_by('order''ASC');
        
$consulta $this->db->get('menus');
        return 
$consulta->result();
    }      
}
Controlador:
Código PHP:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class 
Home extends CI_Controller {
    
    function 
__construct() 
    {
        
parent::__construct();
        
$this->load->model('Model_menus');
    }
    
    function 
index() 
    {
        
$datos['menu'] = $this->Model_menus->get_menu();
        
$id_limpio $this->security->xss_clean($id_menu);
        
$datos['submenu'] = $this->Model_menus->get_sub_menu($id_limpio);
        
$this->load->view('index',$datos);    
    }
}
  #2 (permalink)  
Antiguo 15/03/2015, 21:40
Avatar de Alun  
Fecha de Ingreso: diciembre-2009
Ubicación: Liverpool
Mensajes: 140
Antigüedad: 14 años, 11 meses
Puntos: 4
Respuesta: Utilizar variable de otra funcion

Guarda las id's del menú padre en un array, y luego extráelas, o simplemente usalas en un foreach:


Código PHP:
Ver original
  1. foreach($datos['menu'] as $menu){
  2.     $datos['submenu'][] = $this->Model_menus->get_sub_menu($menu['id']);
  3. }
  4. $this->load->view('index',$datos);

No lo he probado, pero creo que así funcionaría.

Suerte

Etiquetas: funcion, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:37.