elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Problema con Codeigniter...
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Problema con Codeigniter...  (Leído 8,210 veces)
01munrra

Desconectado Desconectado

Mensajes: 282



Ver Perfil
Problema con Codeigniter...
« en: 27 Febrero 2013, 20:09 pm »

Saludos!!!.... les comento...

tengo este controlador
controlador.php
Código
  1. class Controlador extends CI_Controller
  2. {
  3.  
  4. public function index()
  5. {
  6.  $data = array();
  7.  $data['variable'] = "Hola Mundo Como estas???";
  8.  $this->load->view('vista',$data);
  9. }
  10.  
  11. public function imprimir()
  12. {
  13.  $html = $this->load->view('vista','',true);
  14.  echo $html;
  15. }
  16. }
  17.  

y tengo la vista

vista.php
Código
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <title> Prueba PDF</title>
  6.  
  7. </head>
  8. <body>
  9.  
  10. <h1><?php echo $variable; ?></h1>
  11.  
  12. <a href="<?php echo site_url("controlador/imprimir") ?>">Imprimir</a>
  13.  
  14. </body>
  15. </html>
  16.  

y pues al correr el eejercicio me muestra esto en el explorador:
Código
  1. Hola Mundo Como estas???
  2.  
  3. Imprimir
  4.  

imprimir claro esta en una etiqueta <a> que me permite imprimir la informacion que se esta mostrando...
y pues aqui viene la cuestion cuando yo presiono a la opcion de Imprimir me muestra esto:
Código
  1. A PHP Error was encountered
  2.  
  3. Severity: Notice
  4.  
  5. Message: Undefined variable: variable
  6.  
  7. Filename: views/vista.php
  8.  
  9. Line Number: 10
  10.  
  11.  
  12. Imprimir
  13.  

si ven la funcion imprimir que esta en el controlador, la funcion imprimir lo que estoy tratando de hacer es capturar la información que se mostro al correr el ejercicio..... y pues seegun el manual de CI tengo que usar esta funcion $html = $this->load->view('vista','',true); y le hago un echo a la variable $html pare que me muestre lo que esta caprurando.... y pues como que no esta funcionando puesto el error que me muestra....

les agradezco cualquier tipo de informacion... Gracias!!!


« Última modificación: 28 Febrero 2013, 17:05 pm por 01munrra » En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.855



Ver Perfil WWW
Re: Problema con Codeigniter...
« Respuesta #1 en: 27 Febrero 2013, 20:15 pm »

Y donde declaras la variable "variable" ? Yo no la veo en ningún sitio  :silbar: El unico momento en el que la usas es para imprimirla justo donde te da el error.


Saludos


En línea

01munrra

Desconectado Desconectado

Mensajes: 282



Ver Perfil
Re: Problema con Codeigniter...
« Respuesta #2 en: 27 Febrero 2013, 20:21 pm »

ohhh... sorry lo escribi mal....

Código
  1. class Controlador extends CI_Controller
  2. {
  3.  
  4. public function index()
  5. {
  6. $data = array();
  7. $data['variable'] = "Hola Mundo Como estas???";
  8. $this->load->view('vista',$data);
  9. }
  10.  
  11. public function imprimir()
  12. {
  13. $html = $this->load->view('vista','',true);
  14. echo $html;
  15. }
  16. }
  17.  

lo copie mal.... esta si es....

saludos!!
En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.855



Ver Perfil WWW
Re: Problema con Codeigniter...
« Respuesta #3 en: 28 Febrero 2013, 03:59 am »

Hola,

2 cosas:

1. Como llamas la función imprimir? Me refiero, el enlace que tienes puesto en la vista esta mal por eso pregunto xD

2.  
Citar
la funcion imprimir lo que estoy tratando de hacer es capturar la información que se mostro al correr el ejercicio.....

No... lo que estas haciendo en la función imprimir es volver a generar la vista solo que esta vez, en vez de mostrarla, la guardas en una variable. No capturas nada de lo que has mostrado anteriormente ni nada parecido.

Aparte de eso... Puedes hacerte un workaround declarando $data como variable de classe en vez de local de index().

Código
  1. <?php
  2. class Controlador extends CI_Controller {
  3.   private $data = NULL;
  4.  
  5.   public function index(){
  6.      $this->data = array();
  7.      $this->data['variable'] = "Hola Mundo Como estas???";
  8.      $this->load->view('vista',$this->$data);
  9.   }
  10.  
  11.   public function imprimir(){
  12.      $html = $this->load->view('vista',$this->data,true);
  13.      echo $html;
  14.   }
  15. }
  16. ?>

Saludos
En línea

01munrra

Desconectado Desconectado

Mensajes: 282



Ver Perfil
Re: Problema con Codeigniter...
« Respuesta #4 en: 28 Febrero 2013, 17:09 pm »

1. Como llamas la función imprimir? Me refiero, el enlace que tienes puesto en la vista esta mal por eso pregunto xD

la funcion la llamo de esta forma: <a href="<?php echo site_url("controlador/imprimir") ?>">Imprimir</a>, segun el manual CI....

y si es cierto, en la funcion Imprimir se esta generando de nuevo la vista y esta ves la estoy guardando en una variable...... mi idea de esto es aplicarle la libreria DOMPDF a la variable $html, para imprimir la informacion generada en la vista....

aplique lo que me indicas.... pero sigue generando el error.... no entiendo que esta pasando....



saludos!!!!
En línea

cassiani


Desconectado Desconectado

Mensajes: 978


« Anterior | Próximo »


Ver Perfil WWW
Re: Problema con Codeigniter...
« Respuesta #5 en: 28 Febrero 2013, 18:18 pm »

hola 01munrra, el error te lo da porque no le estas enviando la variable "variable" a la vista, cuando ejecutas el método imprimir, así que tienes dos soluciones:

1.- le envías la variable desde el método imprimir:
Código
  1. public function imprimir(){
  2.     $data['variable'] = 'algun dato';
  3.        $this->load->view('vista',$data);
  4. }

2.- verificas que la variable este definida en la vista, antes de imprimirla:
Código
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <title> Prueba PDF</title>
  6. </head>
  7. <body>
  8. <h1><?php echo isset($variable) ? $variable : 'otra cosa'; ?></h1>
  9. <a href="<?php echo site_url("controlador/imprimir") ?>">Imprimir</a>
  10. </body>
  11. </html>

Además, no es necesario que uses site_url para crear el enlace, usa en su lugar la función anchor, ejemplo:
sustituyes esto:
Código:
<a href="<?php echo site_url("controlador/imprimir"); ?>">Imprimir</a>

por esto:
Código:
<?php echo anchor('controlador/imprimir','imprimir'); ?>

En línea

01munrra

Desconectado Desconectado

Mensajes: 282



Ver Perfil
Re: Problema con Codeigniter...
« Respuesta #6 en: 28 Febrero 2013, 19:19 pm »

el error consiste..... al parecer cuando voy a Imprimir, cuando CI hace esto $html = $this->load->view('vista',$this->data,true); parece que no encuentra la variable con informacion y arroja el error de desconocer la variable y por lo tanto no imprime nada..... muestra solo esto, y claro la idea es Imprimir el valor que trae la variable....

Código
  1. Imprimir
  2.  

tal como indicas cassiani


Saludos!!!
« Última modificación: 28 Febrero 2013, 19:21 pm por 01munrra » En línea

#!drvy
Moderador
***
Desconectado Desconectado

Mensajes: 5.855



Ver Perfil WWW
Re: Problema con Codeigniter...
« Respuesta #7 en: 28 Febrero 2013, 20:01 pm »

Es que la variable $data, la defines en el index() no en imprimir(). Por eso te pregunte como llamabas la función imprimir xD. La función "index()" es solo para cuando llamas directamente el controlador sin especificar una función.

La solución esta en que definas la variable $data (hacerlo todo...) en __construct(). Así se "setea" nada mas se cargue el Class dando igual si directa o indirectamente.

Código
  1. <?php
  2. class Controlador extends CI_Controller {
  3.  private $data = NULL;
  4.  
  5.  public function __construct(){
  6.    $this->data = array();
  7.    $this->data['variable'] = "Hola Mundo Como estas???";
  8.  }
  9.  
  10.  public function index(){
  11.    $this->load->view('vista',$this->$data);
  12.  }
  13.  
  14.  public function imprimir(){
  15.    $html = $this->load->view('vista',$this->data,true);
  16.    echo $html;
  17.  }
  18. }
  19. ?>

O en declarar imprimir() como privada y llamarla desde index().

Saludos
« Última modificación: 28 Febrero 2013, 20:03 pm por drvy | BSM » En línea

cassiani


Desconectado Desconectado

Mensajes: 978


« Anterior | Próximo »


Ver Perfil WWW
Re: Problema con Codeigniter...
« Respuesta #8 en: 28 Febrero 2013, 22:53 pm »

eso, siempre y cuando la variable no deba cambiar de valor, yo por ejemplo trabajo titulos diferentes en una misma vista, según que método accediste, pero si la variable mantendra un valor estático, la mejor forma es la que expone el viejo monkey, ya que el constructor siempre es lo primero que se ejecuta en la clase.

saludos!
En línea

01munrra

Desconectado Desconectado

Mensajes: 282



Ver Perfil
Re: Problema con Codeigniter...
« Respuesta #9 en: 1 Marzo 2013, 23:17 pm »

pienso lo mismo cassiani, la solución que plantea drvy | BSM sirve mas, para un sistema estático, mas no funcionaria en mi caso, ya que la idea es añadir mas funciones, mas vistas y a la final es hacerle  una opción para imprimir reportes a tantas vistas tenga el controlador, un sistema dinámico en pocas palabras........


Saludos!!!
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema en CodeIgniter
Desarrollo Web
Shell Root 2 2,306 Último mensaje 21 Marzo 2013, 19:40 pm
por 01munrra
Modulo de administrador en CodeIgniter
Desarrollo Web
Shell Root 5 4,128 Último mensaje 30 Mayo 2013, 16:49 pm
por EFEX
Añadir varios items al carrito codeigniter
PHP
marko1985 2 2,151 Último mensaje 19 Junio 2014, 04:36 am
por JorgeEMX
Problema con codeigniter
PHP
BJM 6 4,439 Último mensaje 24 Agosto 2016, 17:09 pm
por [u]nsigned
problema con los indexes en foreach en codeigniter
PHP
geshiro 0 2,153 Último mensaje 15 Agosto 2016, 18:39 pm
por geshiro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines