Skip to content

Instantly share code, notes, and snippets.

@josegomezr
Created March 3, 2016 04:25
Show Gist options
  • Save josegomezr/590492c268bd9a88e844 to your computer and use it in GitHub Desktop.
Save josegomezr/590492c268bd9a88e844 to your computer and use it in GitHub Desktop.
CodeIgniter JSON Controller

Esta clase debe estar escrita en MY_Controller.php ya que CodeIgniter no tiene otro mecanismo no invasivo para autocargar clases que extiendan el núcleo.

Lo que hace es capturar el retorno de los métodos del controlador y convertirlos a JSON.

Usualmente hacemos

// omitido para brevedad
public function metodo_json(){
    $data = array(/*.....*/);
    header('Content-Type: application/json');
    echo json_encode($data);
    exit;
}

para imprimir JSON, pero llamar a exit corta el trabajo del output class usualmente no se nota, pero hay casos.

Snippet usando JSON_Controller

public function metodo_json(){
    $data = array(/*.....*/);
    return $data;
}
<?php
/**
* JSON Controller
*/
class JSON_Controller extends CI_Controller {
public function _remap( $method, $params ) {
// si esta extendiendo de alguna clase que tenga _remap declarado:
// $result = parent::_remap( $method, $params );
// sino
$result = call_user_func_array( array(
$this,
$method
), $params );
$this->output->set_content_type( 'application/json' )->set_output( json_encode( $result ) );
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment