Autor
|
Tema: Problema con Codeigniter... (Leído 8,210 veces)
|
01munrra
Desconectado
Mensajes: 282
|
Saludos!!!.... les comento... tengo este controlador controlador.php class Controlador extends CI_Controller { public function index() { $data['variable'] = "Hola Mundo Como estas???"; $this->load->view('vista',$data); } public function imprimir() { $html = $this->load->view('vista','',true); } }
y tengo la vista vista.php <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title> Prueba PDF</title> </head> <body> <h1> <?php echo $variable; ?></h1> <a href=" <?php echo site_url ("controlador/imprimir") ?>">Imprimir</a> </body> </html>
y pues al correr el eejercicio me muestra esto en el explorador: Hola Mundo Como estas??? Imprimir
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: A PHP Error was encountered Severity: Notice Message: Undefined variable: variable Filename: views/vista.php Line Number: 10 Imprimir
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
|
Y donde declaras la variable "variable" ? Yo no la veo en ningún sitio El unico momento en el que la usas es para imprimirla justo donde te da el error. Saludos
|
|
|
En línea
|
|
|
|
01munrra
Desconectado
Mensajes: 282
|
ohhh... sorry lo escribi mal.... class Controlador extends CI_Controller { public function index() { $data['variable'] = "Hola Mundo Como estas???"; $this->load->view('vista',$data); } public function imprimir() { $html = $this->load->view('vista','',true); } }
lo copie mal.... esta si es.... saludos!!
|
|
|
En línea
|
|
|
|
#!drvy
|
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. 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(). <?php class Controlador extends CI_Controller { private $data = NULL; public function index(){ $this->data['variable'] = "Hola Mundo Como estas???"; $this->load->view('vista',$this->$data); } public function imprimir(){ $html = $this->load->view('vista',$this->data,true); echo $html; } } ?>
Saludos
|
|
|
En línea
|
|
|
|
01munrra
Desconectado
Mensajes: 282
|
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
Mensajes: 978
« Anterior | Próximo »
|
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: public function imprimir(){ $data['variable'] = 'algun dato'; $this->load->view('vista',$data); }
2.- verificas que la variable este definida en la vista, antes de imprimirla: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title> Prueba PDF</title> </head> <body> <h1> <?php echo isset($variable) ? $variable : 'otra cosa'; ?></h1> <a href="<?php echo site_url("controlador/imprimir") ?>">Imprimir</a> </body> </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: <a href="<?php echo site_url("controlador/imprimir"); ?>">Imprimir</a> por esto: <?php echo anchor('controlador/imprimir','imprimir'); ?>
|
|
|
En línea
|
|
|
|
01munrra
Desconectado
Mensajes: 282
|
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.... Imprimir
tal como indicas cassianiSaludos!!!
|
|
« Última modificación: 28 Febrero 2013, 19:21 pm por 01munrra »
|
En línea
|
|
|
|
#!drvy
|
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. <?php class Controlador extends CI_Controller { private $data = NULL; public function __construct(){ $this->data['variable'] = "Hola Mundo Como estas???"; } public function index(){ $this->load->view('vista',$this->$data); } public function imprimir(){ $html = $this->load->view('vista',$this->data,true); echo $html; } } ?>
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
Mensajes: 978
« Anterior | Próximo »
|
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
Mensajes: 282
|
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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Problema en CodeIgniter
Desarrollo Web
|
Shell Root
|
2
|
2,306
|
21 Marzo 2013, 19:40 pm
por 01munrra
|
|
|
Modulo de administrador en CodeIgniter
Desarrollo Web
|
Shell Root
|
5
|
4,128
|
30 Mayo 2013, 16:49 pm
por EFEX
|
|
|
Añadir varios items al carrito codeigniter
PHP
|
marko1985
|
2
|
2,151
|
19 Junio 2014, 04:36 am
por JorgeEMX
|
|
|
Problema con codeigniter
PHP
|
BJM
|
6
|
4,439
|
24 Agosto 2016, 17:09 pm
por [u]nsigned
|
|
|
problema con los indexes en foreach en codeigniter
PHP
|
geshiro
|
0
|
2,153
|
15 Agosto 2016, 18:39 pm
por geshiro
|
|