CodeIgniter 4 tratar parámetros GET

Veamos como la clase Request de CodeIgniter 4 nos permite trabajar con los parámetros que nos llegan por GET

Inicialmente poder acceder a las variables que nos envían por GET debería ser fácil dentro de nuestra clase. Veamos un ejemplo:

Controlador:

<?php namespace App\Controllers;

use App\Models\NewsModel;
use CodeIgniter\Controller;

/**
 * Class News
 *
 * @package CodeIgniter
 */

class News extends BaseController
{
  private $newsModel;

  /**
   * Constructor.
  */

  public function __construct()
  {
    $this->newsModel = new NewsModel();
  }

  /**
   * List news
   */

  public function list()
  {
    /* GET PARAMETERS */
    if ( $this->request->getVar('lang')!==null){
      $lang= $this->request->getVar('lang'); 
    } else {
      $lang= $this->lang;
    }

    $data = [
      'new' => $this->newsModel->getNews($id, $lang)
    ];

    echo view('template_header');
    echo view('news_view', $data);
    echo view('template_footer');
  }
}

Si os fijáis, la clave está en el:

$this->request->getVar('lang')

Con esta instrucción cogemos el valor que nos envían por GET mediante el enlace. Fijáos:

https://mipagina.com/news/list?lang=es

Pues ya hemos visto el enlace y cómo leer desde nuestro controlador esa variable que nos pasan.

Recorrer todas las variables GET

Ahora veamos un ejemplo de cómo leer todas las variables de forma automática con sus valores.

<?php namespace App\Controllers;

use App\Models\NewsModel;
use CodeIgniter\Controller;

/**
 * Class News
 *
 * @package CodeIgniter
 */

class News extends BaseController
{
  private $newsModel;

  /**
   * Constructor.
  */

  public function __construct()
  {
    $this->newsModel = new NewsModel();
  }

  /**
   * List news
   */

  public function list()
  {
    /* GET PARAMETERS */
    $parameters= "";
    foreach($this->request->getGet() as $key => $value) {
      $parameters .= $key.": ". $value ."<br>";
    }

    $data = [
      'new' => $this->newsModel->getNews($id, $lang),
      'parameters' => $parameters
    ];

    echo view('template_header');
    echo view('news_view', $data);
    echo view('template_footer');
  }
}

La clave de recorrer todas las variables está en el código siguiente:

$parameters= "";
foreach($this->request->getGet() as $key => $value) {
  $parameters .= $key.": ". $value ."<br>";
}

Aquí vamos leyendo el nombre de la variable y su valor. Veamos un ejemplo claro:

https://mipagina.com/news/list?lang=es&id=4&cat=news

A partir de este enlace, veremos que la variable $parameters cogerá este resultado:

lang: es
id: 4
cat: news

Si al hacerlo directamente (poniendo el $this->request->getVar() ) os da algún tipo de error, entonces deberéis hacerlo como indica en la documentación oficial de CodeIgniter 4. os dejamos el enlace en la parte inferior para que podáis consultarlo.

Espero que con este artículo sepáis en CodeIgniter 4 cómo tratar los parámetros GET.


Más información