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

Problema con clase VIEW

Estas en el tema de Problema con clase VIEW en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola camaradas Quisiera saber si me pueden ayudar con algo Estoy dando mis primeros pasos utilizando patrones de diseño y OOP en php y tengo ...
  #1 (permalink)  
Antiguo 29/12/2009, 19:15
 
Fecha de Ingreso: agosto-2008
Mensajes: 271
Antigüedad: 15 años, 8 meses
Puntos: 2
Pregunta Problema con clase VIEW

Hola camaradas

Quisiera saber si me pueden ayudar con algo

Estoy dando mis primeros pasos utilizando patrones de diseño y OOP en php
y tengo una clase VIEW donde cree métodos para cargar cada
parte de la pagina en un contenedor llamado layout que también tiene su metodo
cada sección de la pagina importa lo siguiente el header, menu, footer
y contenido pero esta ultima sección la tengo dividida en 2 partes una de ellas
contendrá la grilla y la otra un formulario que se utilizara para las acciones
de agregar o actualizar utilizando ajax para pasar argumentos que definirán entre
otras cosas que form se carga, el problema viene cuando se debe cargar el form
para actualizar o agregar ya que me carga parte del layout que ya estaba cargado

les dejo el código para que vean que se puede mejorar y si lo estoy haciendo bien o mal

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;
	}
}
?>
controlador: click en un item del menu
Código:
				
$this->_model->findAll();
$this->view->elements = $this->_model->getResponse('moviles');
$this->view->title = Registry::get('APP_NAME');				
$this->view->displayHeader('../application/views/header.php');
$this->view->displayMenu('../application/views/menu.php');
$this->view->displayGrid('../application/views/moviles/view_moviles.php');
$this->view->displayFooter('../application/views/footer.php');	

		$this->view->setLayout('../application/views/layout.php');
		$this->view->render();
controlador:codigo que va en la accion actualizar por ejemplo
Código:
		$this->view->_displayForm = true;
		$this->view->displayForm('../application/views/moviles/view_actions_moviles.php');
//		$this->view->setLayout('../application/views/layout.php');
		$this->view->render();
Espero puedan ayudarme.

Saludos

Última edición por Fenris; 29/12/2009 a las 19:40
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 08:17.