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

Problema con Layout, y clase View

Estas en el tema de Problema con Layout, y clase View en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola Estoy desarrollando una app con PHP OOP, MVC, y tengo el siguiente layout. En todos los ítem del menú se muestra una grilla de ...
  #1 (permalink)  
Antiguo 04/01/2010, 19:34
 
Fecha de Ingreso: agosto-2008
Mensajes: 271
Antigüedad: 15 años, 8 meses
Puntos: 2
Pregunta Problema con Layout, y clase View

Hola

Estoy desarrollando una app con PHP OOP, MVC, y tengo el siguiente layout.

En todos los ítem del menú se muestra una grilla de datos donde cada fila contiene un elemento que es un enlace que carga el formulario para editar la información de la fila seleccionada, y ademas botones para agregar y eliminar entre otros, bueno lo que yo quiero es que al presionar el enlace para editar, se cargue la vista con el formulario en esa sección del LAYOUT, el mismo comportamiento debe tener la acción agregar, y es en este punto donde necesito de su ayuda, como puedo hacer para cargar el form correspondiente a la acción (editar o agregar), tengo una clase VIEW que es donde debo realizar ese proceso, pero me ocurren las siguientes cosas, para editar me carga el form solo una vez y las siguientes veces se deforma todo el layout, lo hacia con AJAX donde en el acción index cargaba el layout y todo lo demás y luego en la petición ajax para cargar el form no renderiza el layout y no carga nada, espero sus consejos.

VIEW.php
Código:
<?php
class View
{
	private $template;
	private $layout;
	private $_menu = NULL;
	private $_stats = NULL;
	private $_header = NULL;
	private $_grid = NULL;
	private $_footer = NULL;
	private $_form = NULL;
	private $flash;
	protected $container = null;
	public $_displayForm = false;
	
	function __construct() { 
		$this->flash = new Flash(); 
		$this->vars  = new stdClass();
	}

	public function assign($varname , $varvalue)
	{
		$this->vars->$varname = $varvalue;
	}
	
	public function get($varname)
	{
		if (isset($this->view->$varname))
			return $this->vars->$varname;
		else
			return NULL;
	}
	

	public function setLayout( $layout ){
		if ( !file_exists( $layout ) ){
			$this->flash->error($layout. ' no es un archivo existente');
		}
		$this->layout = $layout;
	}

	public function displayHeader( $header )
	{
		ob_start();
		if (!file_exists($header))
		{
			$this->flash->error($header. 'no es un archivo existente');
		}
		require $header;
		$this->_header = ob_get_clean();
		//return $_header;
	}
	
	public function displayMenu( $menu )
	{
		ob_start();
		if (!file_exists($menu))
		{
			$this->flash->error($menu. 'no es un archivo existente');
		}
		require $menu;
		$this->_menu = ob_get_clean();
		//return $_menu;
	
	}
	
	public function displayStats( $statsPage )
	{
		ob_start();
		if (!file_exists($statsPage))
		{
			$this->flash->error($statsPage. 'no es un archivo existente');
		}
		require $statsPage;
		$this->_stats = ob_get_clean();
//		return $_statsPage;
	
	}
	
	public function displayFooter( $footer )
	{
		ob_start();
		if (!file_exists($footer))
		{
			$this->flash->error($footer. 'no es un archivo existente');
		}
		require $footer;
		$this->_footer = ob_get_clean();
//		return $_footer;
	}
	
	public function displayGrid( $grid )
	{
		ob_start();
		if (!file_exists($grid))
		{
			$this->flash->error($grid. 'no es un archivo existente');
		}
		require $grid;
		$this->_grid = ob_get_clean();
//		return $_grid;
	}

	public function displayForm( $form )
	{
		if ( $this->_displayForm )
		{
			ob_start();
				if (!file_exists($form))
				{
					$this->flash->error($form. 'no es un archivo existente');
				}
			require $form;
			$this->_form = ob_get_clean();
//			return $_form;
		}
		return null;	
	}

	
	public function setTemplate( $template ){
		if ( !file_exists( $template ) ){
			$this->flash->error($template. ' no es un archivo existente');
		}
		$this->template = $template;
	}	

	
	public function render(){



		if ($this->template)
			$this->content   = $this->renderTemplate();
		
		include( $this->layout ); //aqui tengo el problema
	}


	
	public function renderTemplate(){
		ob_start();
//		@extract( $this->data, EXT_OVERWRITE );
//		@extract( $this->errorData, EXT_OVERWRITE );

		include ( $this->template );
		
		$content = ob_get_clean();
		return $content;
	}
}
?>
Saludos

Etiquetas: clase, layout, view
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 01:05.