Problema con vistas en codeigniter

Hola buenas estoy empezando a utilizar este framework para ir probando hacer aplicaciones caseras. Me he leido bastante del manual y más o menos se como funciona..
Escribo porque tengo un problemilla con las vistas y los datos que les paso a las vistas.
He generado una vista(general.php es el nombre de la vista) general que sera la estructura de la web y en la que quiero anidar otras vistas dependiendo de la sección de la web. He creado un controlador llamado PHP como controlador principal , su código es muy sencillo es tal que así:

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class PHP extends CI_Controller{
   
   function index(){
      $datos['titulo'] = "Proyecto Alpha";
      $datos['cuerpo'] = $this->load->view('principal/enlaces','',TRUE);
      $this->load->view('general',$datos);
   }
}
?>


Aquí anido una vista llamada 'enlaces' que esta en la carpeta principal dentro de vistas con la vista general. En este controlador no tengo ningún problema. El problema viene cuando en otro controlador no defino la variable cuerpo dentro del array datos. El código de este controlador es aún mas sencillo.

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Usuario extends CI_Controller{
   
   function index(){
      $datos['titulo']="Usuarios";
      $this->load->view('general',$datos);
   }
}
?>


En el no añado la variable $datos['cuerpo'].

Bueno como quiero que mi vista general sea flexible, a que haya veces que los datos que se le pasan esten definidos o no he hecho esta vista.

<!DOCTYPE HTML>
<html>
<head>
   <title><?php echo $titulo?></title>
</head>
<body>
   <div id="Cuerpo">
      <header>
         <h1> <a href="index.php">Proyecto Alpha</a></h1>
         <p>Aplicacion casera</p>
      </header>
      <?php
         if($cuerpo){
            echo $cuerpo;
         }
      ?>

   </div>
   <footer> Todos los derechos rerservados 2012</footer>
</body>


En la que he compruebo si la variable $cuerpo esta definida. Y he aquí donde se me produce el error. Mas concretamente este:


Imagen

He probado con isset y con !is_null , pero nada. ¿Qué esta ocurriendo?
No controlo CodeIgniter, pero ese error en PHP, como te pone ahí, es que no tienes inicializada la variable. Hazlo antes de comprobar si es null

$cuerpo = null


U otro valor, según lo que valga. De todas formas no entiendo ese código. La variable $cuerpo... ¿qué se supone que tiene que valer? Entrando así siempre va a tener el valor de inicialización.
Efilnikefusin escribió:No controlo CodeIgniter, pero ese error en PHP, como te pone ahí, es que no tienes inicializada la variable. Hazlo antes de comprobar si es null

$cuerpo = null


U otro valor, según lo que valga. De todas formas no entiendo ese código. La variable $cuerpo... ¿qué se supone que tiene que valer? Entrando así siempre va a tener el valor de inicialización.


Estoy contigo.

Aunque no conozco este framework, no difiere mucho de rails.

Imagino que tendrias que hacer algo en plan:

$datos['cuerpo'] = null;

Y luego comprobar si no es null para mostrar el cuerpo o no.

O sea, si una vista recibe X parámetros, deberías de darle todos esos parámetros. Aunque yo miraría si lo que haces de usar una sola vista para 2 acciones es lo correcto o no.
2 respuestas