Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

CodeIgniter ¿ Menu de navegacion ?

Estas en el tema de ¿ Menu de navegacion ? en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Amigos me estoy iniciando con CI, mi primer framework para aplicaciones web... Mi gran duda es esta, como hago un simple menu de navegacion algo ...
  #1 (permalink)  
Antiguo 02/01/2011, 21:05
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años
Puntos: 31
¿ Menu de navegacion ?

Amigos me estoy iniciando con CI, mi primer framework para aplicaciones web...

Mi gran duda es esta, como hago un simple menu de navegacion algo asi como esto, obviamente sin ajax y que se mantenga siempre ese link de navegacion



Al dar click en el lINK 1 , que se carge en el cuadro negro de abajo ese link ... en fin espero su ayuda

Lo que se me ocurrio a mi es esto, declarar en el constructor mi array de navegacion, algo simple no mas Inicio, Quienes Somos, Contacto; y luego pasarlo a mi vista $this->load->view('home',$navegacion);

Una ves teniendo eso, supongo que se vera siempre el link de navegacion no ?, mi duda como seria hacer cargar el contenido en el div de abajo ?, sin usar AJAX

Última edición por HiToGoRoShi; 02/01/2011 a las 21:31
  #2 (permalink)  
Antiguo 02/01/2011, 22:06
 
Fecha de Ingreso: octubre-2009
Mensajes: 245
Antigüedad: 14 años, 6 meses
Puntos: 17
Respuesta: ¿ Menu de navegacion ?

No se como trabaja CI pero como es MVC pues fijate el la doc como hacer uso de las vistas que basicamente y lo de las ligas pues debe de tener sus helpers.
  #3 (permalink)  
Antiguo 02/01/2011, 22:12
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: ¿ Menu de navegacion ?

No soy usuario de CodeIgniter, pero te dejo unos links que te pueden servir de guía:

http://www.phpeveryday.com/articles/...rary-P230.html
http://codeigniter.com/wiki/Displaying_Multiple_Views/
http://codeigniter.com/forums/viewthread/69180/#340942

Prueba y nos comentas.

Saludos.
  #4 (permalink)  
Antiguo 02/01/2011, 23:40
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años
Puntos: 31
Respuesta: ¿ Menu de navegacion ?

Gracias colegas su ayuda fue bastante util, igual para aquellas personas interesadas y con ayuda en español les dejo aqui el link

http://nomeaclaro.wordpress.com/2009...n-codeigniter/

PD: muy interesante eso de crear una clase para llamar a los menus, asi puedo crear un objeto de mi menu desde cualquier parte
  #5 (permalink)  
Antiguo 03/01/2011, 07:42
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años
Puntos: 31
Respuesta: ¿ Menu de navegacion ?

Hola amigos, lei los tutos e igual solo encontre como mostrar varias vistas, no como navegar al dar click en los enlaces y que sea mostrado en la parte de abajo
  #6 (permalink)  
Antiguo 03/01/2011, 11:17
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 18 años, 5 meses
Puntos: 890
Respuesta: ¿ Menu de navegacion ?

Y de donde sale el contenido que quieres mostrar de una BD? muestra lo que has hecho hasta ahora.
__________________
Drupal Argentina
  #7 (permalink)  
Antiguo 03/01/2011, 13:30
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años
Puntos: 31
Respuesta: ¿ Menu de navegacion ?

lo tengo asi .... y lo quiero plantar asi:

Código PHP:
Ver original
  1. <?php
  2. class Home extends Controller
  3. {
  4.     private $nav = 'body';
  5.    
  6.     public function __construct()
  7.     {
  8.         parent::Controller();
  9.         $this->load->helper('url');
  10.        
  11.         //Cabezera
  12.         $data = array('titulo' => 'Anexcons SRL');
  13.         $this->load->view('home/header',$data);
  14.         //Menu
  15.         $this->load->view('home/menu',false);
  16.         //Cuerpo
  17.         $this->load->view('home/' . $this->nav);
  18.         //Pie de pagina
  19.         $this->load->view('home/footer');
  20.     }
  21.    
  22.     public function index()
  23.     {
  24.  
  25.     }
  26.    
  27.     public function nuevoUsuario()
  28.     {
  29.         $this->nav = 'registro';
  30.     }
  31. }
  32. ?>

Esta bien hecho cargar todo en el constructor ? , porque sino lo cargo en el constructor no se muestra las demas partes de la pagina y no quiere ir declarando todo de nuevo, supongo que se debe declarar toda de una sola ves no ?

Y la cosa es esto, cuando yo haga click en un link en etsa funcion se carge la nueva pagina y muestre los demas tal como esta...

Código PHP:
Ver original
  1. $this->load->view('home/registroUsuario');

Osea el tercer view que cargo es el contenido, y justamente quiero saber como mandarle a que carge otra pagina sin tener que copiar todas lsa cargas de los views en diferentes funciones
  #8 (permalink)  
Antiguo 03/01/2011, 15:55
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 18 años, 5 meses
Puntos: 890
Respuesta: ¿ Menu de navegacion ?

Hay distintas maneras de llamar a las vistas no necesariemante desde el controller, los puedes llamar tambien desde otras vistas.

Normalmente lo que hago es crear el template principal (el layout) y dentro llamo a las vistas que necesito directamente o tomando una variable como referencia:

Ejm:

layout_view.php

Código HTML:
Ver original
  1.  
  2. <title><?php ($title) ? print $title : NULL; ?> </title>
  3. ...
  4. ...
  5.  
  6. <menu>
  7. <?php $this->load->view('menu_view'); ?>
  8. </menu>
  9.  
  10. <cuerpo>
  11. <?php $this->load->view('content_view') ?>
  12. </cuerpo>
  13.  
  14. </html>
  15. ....
  16. ...


Desde el controller simplemente llamo al template_view:

Código PHP:
Ver original
  1. function action(){
  2.  
  3. $data['loquesea'] = "el contenido a enviar al view";
  4. $this->load->view('template_view', $data);
  5.  
  6. }

Cuando te envia el arreglo a la vista lo puedes tomar e imprimir directamente como variable, a menos que envies otro arreglo.

EJM:
Código PHP:
Ver original
  1. function index(){
  2.  
  3. $data['title'] = "El titulo de mi WEB";
  4. $this->load->view('template_view', $data);
  5.  
  6. }

EL contructor solo lo usarias para validar usuarios, cargar librerias o modelos,
Las otras vistas o partials tambien pueden recibir e imprimir variables que le envies desde el controller.
__________________
Drupal Argentina
  #9 (permalink)  
Antiguo 03/01/2011, 20:57
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años
Puntos: 31
Respuesta: ¿ Menu de navegacion ?

Ok perfecto tu idea, me parece mas ordenada solamente ahora necesito saber como hacer para pasarle a este LOAD

Código HTML:
Ver original
  1. <?php $this->load->view('content_view') ?>

que tecnicamente es el que cargara los contenidos del sitio web, osea se que puedo pasarle valores por defectos, objetos y arrays pero no me refiero a eso, sino supongamos quiero abrir una nueva pagina talvez un formulario de registro, o contactenos, o una galeria de imagenes y no quiero pasar por variable todo el codigo html para imprimir eso, lo que se me ha ocurrido ahora es hace resto y diganme si esta bien o que otra manera mas profesional existe.

Código PHP:
Ver original
  1. <?php $this->load->view($_POST['contenido']) ?>

Asi cuando reciba una pagina, automaticamente este sabra que tiene que cargar !!
  #10 (permalink)  
Antiguo 04/01/2011, 11:20
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 18 años, 5 meses
Puntos: 890
Respuesta: ¿ Menu de navegacion ?

Como lo planteas esta bien, creas por ejemplo un partial (form_view.php)

en tu template_view.php

Código PHP:
Ver original
  1. <?php $this->load->view($page) ?>

Dessde el controller le envias el partial que quieras mostrar:

Ejm:

Código PHP:
Ver original
  1. function form(){
  2.  
  3. $data['page'] = 'form_view';
  4. $this->load->view('template_view', $data);
  5.  
  6. }

Es solo cuestión de buscar lo mas conveniente. Para no repetir los actions le puedes pasar el nombre del partial por URL también. En fin es solo de practicar u probar

Saludos .
__________________
Drupal Argentina
  #11 (permalink)  
Antiguo 05/01/2011, 08:29
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años
Puntos: 31
Respuesta: ¿ Menu de navegacion ?

Perfecto colega, justo lo habia hecho asi antes de ver el ejemplo :), una pregunta extra .....

Supongamos si manejo sessiones y quiero restringir acceso a ciertas paginas, todavia nose las funciones pero seria algo asi...

Código PHP:
Ver original
  1. if(session==true)
  2. {
  3. $this->load->view('form_vie');
  4. }else
  5. {
  6. echo 'la pagina no existe';
  7. }
  #12 (permalink)  
Antiguo 06/01/2011, 12:14
 
Fecha de Ingreso: septiembre-2007
Mensajes: 11
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: ¿ Menu de navegacion ?

Hola tengo un problema similar, en la pagina que estoydesarrollnado estoy usando codeigniter
tengo este Controlador
Código PHP:
class Inicio extends  Controller{
    function 
__construct(){
        
parent::Controller();
    }
   public function 
index(){
        
$data['main_content']='contenidos/contenido';
        
$this->load->view('template'$data);
    }
   public function 
videos(){
        
$data['main_content']='contenidos/contenido_videos';
        
$this->load->view('template'$data);
    }    

Despues tengo este template que esta en mis vistas
Código PHP:
<?php
$this
->load->view('common/header');
$this->load->view('common/navegacion');
$this->load->view($main_content);
$this->load->view('common/footer');
?>
Tambien tengo esta vista de navegacion
Código PHP:
<div class="interior" id="indentmenu">
          <ul id="menu_principal">      
            <li><a href="<?php echo base_url()?>" class="current">Musica</a></li>
            <li><a href="<?php echo site_url('inicio/videos/')?>">Videos</a></li>
            <li><a href="#">Peliculas</a></li>
            <li><a href="#">Series</a></li>
          </ul>
    </div>
Y tengo este javascript que funciona muybien
<javascript>
function aggEvento(){
var links = document.getElementById('indentmenu').getElementsB yTagName('a');
for(i=0; links[i]; i++){
links[i].onclick = function(){
var links = document.getElementById('indentmenu').getElementsB yTagName('a');
for(j=0; links[j]; j++){
links[j].className = "";
}
this.className ="current";
}
}
}
</javascript>

Todos estos codigos hacen una pagina donde se tiene una cabecera, menu de navegacion, contenido, footer
Todo funciona bien pero el problema que tengo es cuando en mi menu de navegacion (por primera ves apunta a una pestaña llamada "musica") doy click en otra pestaña llamada "videos" el efecto de cambio de navegacion no funciona, osea tengo una fecha apuntando a "musica" y al cambiar a "videos" la fecha por un segundo se queda en "videos" despues vuelve a la pestaña "musica" porque pasa eso ??? la verdad no estoy seguro pero tiene que ver algo con el template ojo: el contenido cambia perfectamente solo el problema es que en el menu de navegacion la fechita no cambia de pestaña para ver el ejemplo entren a [URL="http://www.playno.net"]http://www.playno.net[/URL]
Saben tiene que ver algo con el direccionanmiento porque cuando en mi navegacion en las etiquetas <li><a href="#">Videos</a></li> en el href se escribe "#" todo funciona bien pero oviamente no cambia de contenido

bueno si pudieran ayudarme les agradeseriamucho porque llevo 3 dias parado sin saber que hacer
  #13 (permalink)  
Antiguo 06/01/2011, 16:05
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 18 años, 5 meses
Puntos: 890
Respuesta: ¿ Menu de navegacion ?

Eso no es de Codeigniter es mas bien un problema de planteamiento.
La "flechita no cambia" por que no le pasas como referencia la clase "current"

<li><a href="http://www.playno.net/video" class="current">Videos</a></li>

Tienes varias maneras de verificar en que estado se imprimira la clase current, podrias usar switch/case o if/else o comparar tomando los parametros por url asi podrias determinar en que pagina estas. Si es un menu dinámico el planteamiento será otro.
__________________
Drupal Argentina
  #14 (permalink)  
Antiguo 07/01/2011, 11:14
 
Fecha de Ingreso: septiembre-2007
Mensajes: 11
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: ¿ Menu de navegacion ?

Hola gracias por la respuesta la verdad soy novato en esto pero no entiendo como paso la clase "current" si la primera ves apunta a la primera pestaña "musica" al hacer click en la pestaña "videos" que cosa tengo que enviar como variable?
Código PHP:
<li><a href="<?php echo base_url()?>" class="current">Musica</a></li>
 <li><a href="<?php echo site_url('inicio/videos/')?>">Videos</a></li>
Perdon por ser novato :P
  #15 (permalink)  
Antiguo 07/01/2011, 11:56
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 18 años, 5 meses
Puntos: 890
Respuesta: ¿ Menu de navegacion ?

Puedes crear una function para eso, pero en vista de que se te va a hacer complicado lo mas facil es tomar el parametro por url para saber la ubicación de la página:

http://loquesea.com/video

Código PHP:
Ver original
  1. <div class="interior" id="indentmenu">
  2.           <ul id="menu_principal">      
  3.             <li><a href="<?php echo base_url()?>" class="<?php ($this->uri->segment(1)=='') ? print 'current' : NULL; ?>">Musica</a></li>
  4.             <li><a href="<?php echo site_url('inicio/videos/')?>" class="<?php ($this->uri->segment(1)=='video') ? print 'current' : NULL; ?>">Videos</a></li>
  5. ...etc....
  6.             <li><a href="#">Peliculas</a></li>
  7.             <li><a href="#">Series</a></li>
  8.           </ul>
  9.     </div>

Referencia sobre la clase Uri http://codeigniter.com/user_guide/libraries/uri.html
__________________
Drupal Argentina
  #16 (permalink)  
Antiguo 07/01/2011, 14:32
 
Fecha de Ingreso: septiembre-2007
Mensajes: 11
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: ¿ Menu de navegacion ?

Hola NUCKLEAR muy buena tu solucion te estoy muy agradecido gracias, con esta solucion adios javascript ;) graicas

Etiquetas: navegacion
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 04:05.