Saltarse el renderizado de las vistas

Estoy haciendo un proyecto con Kumbia + Extjs. Toda la parte cliente la maneja Extjs por lo que de kumbia sólo uso los models y controllers. la comunicación entre ambos se hace con Json.

En la clase ActiveRecord añadí el siguiente método:
/**
	 * Formatea la salida de una consulta a un objeto JSON válido 
	 * para trabajar con Extjs
	 * 
	 * @param array $rows
	 * @return json
	 */
	public function toExtjs($rows) 
	{	
		$modelName = array();	
		$ret = array();
		
		foreach($rows as $row) {
			$fields = $this->fields;
			
			foreach($fields as $field) {
				if(isset($row->$field)) $ret[$field] = $row->$field;
			}
			
			array_push($modelName, $ret);
		}

		$return = array();		
		$return["count"] = count($rows);
		$name = $this->source;
		$return[$name] = $modelName;
		
		header("Content-Type: text/plain");
		return json_encode($return);
	}

El caso es que para cada método de controlador tengo que crear una vista donde imprimir la respuesta en formato Json. Al final tengo un montón de vistas donde lo único que hay es una única línea de código que llama a una propiedad del controlador. La funcionalidad que veo necesaria es no tener que crear una vista para estos casos. Si quiero únicamente una salida en Json, XML, texto plano, javascript, etc con poner algo así:
$this->set_response('json');
ya debería bastar.

Esto ya lo hace Zend Framework, por lo que no debería ser muy dificil hacerlo en kumbia.

Comentarios

  • Hola proclamo, pero resulta que eso es MVC es la forma como debe ser una salida (view) es un json, xml, svg, html, pdf, etc...

    Quizas no le vez utilidad porque el framework de js que usas realiza todo el proceso de construir la vista mediante javascript, pero es la forma correcta manejarlo como lo haces es MVC...
  • edited 12:25
    Quizas no le vez utilidad porque el framework de js que usas realiza todo el proceso de construir la vista mediante javascript, pero es la forma correcta manejarlo como lo haces es MVC...

    Si le veo la utilidad, sobretodo si la salida va a ser html, pero cuando no es el caso (y cada vez será menos gracias al uso intensivo del ajax) se hace pesado tener un montón de directorios con archivos en los que no hay casi código.

    De todas formas, si delego la vista en un framework javascript no estoy saltándome ningún principio del MVC.
  • Pues entonces no sabes aaplicar correctamente el MVC porque como te dije una salida es eso y vienen dada por cualquier formato json, xml, pdf... o es que tu armas un pdf en el controller? si es asi pues muy mal un PDF es una salida, es decir un view y debe ir allá...

    Puedes trabajar el ajax como quieras pero tu js debe estar en algun view, porque hasta donde se la unica forma que puedes interactuar js es por medio de un view...

    En la version 1.0 puedes anular las vistas si quieres mostrar nada
  • edited 12:25
    Si te entiendo deivinson, todo depende de cómo entiendas la tecnología y en qué capa del MVC nos encontremos. Un JSON nunca diría que está en la vista, un PDF sí. Es el eterno debate de la V del MVC <!-- s:wink: --><img src="{SMILIES_PATH}/icon_wink.gif" alt=":wink:" title="Wink" /><!-- s:wink: -->

    Gracias por el enlace.
Sign In or Register to comment.