CodeIgniter 4 tratar parámetros POST

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

Ya vimos en el artículo anterior cómo tratar los parámetros GET en CodeIgniter 4. En esta ocasión vamos a ver cómo tratamos los parámetros enviados desde un formulario por POST.

Leer variable POST desde CodeIgniter

Formulario

Un simple formulario con un campo Hidden llamado filter, que será el que leeremos en el controlador

<form action="/users/saveUser" method="post">
  <label for="Name">Name</label>
  <input type="text" name="Name" placeholder="Name" />
  <label for="Age">Age</label>
  <input type="text" name="Age" placeholder="Age" />

  <input type="hidden" name="filter" value="name" />
  <input type="submit" value="Send" />
</form>

Controlador

En el controlador leeremos la variable ‘filter’ para operar con ella.

<?php namespace App\Controllers;

use App\Models\UserModel;
use CodeIgniter\Controller;

/**
 * Class Users
 *
 * @package CodeIgniter
 */

class Users extends BaseController
{
  private $usersModel;

  /**
   * Constructor.
  */

  public function __construct()
  {
    $this->usersModel = new UsersModel();
  }

  /**
   * List users
   */

  public function saveUser()
  {
    /* GET PARAMETERS */
    if ( $this->request->getPost('filter')!==null){
      $filter= $this->request->getPost('filter'); 
    } else {
      $filter= "";
    }

    if ($filter=="name"){
      $this->usersModel->saveuser();
    }

    echo view('template_header');
    echo view('users_view');
    echo view('template_footer');
  }
}

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

$this->request->getPost('filter');

Con esta orden, leemos la variable llamada ‘filter’ que nos pasa el formulario por POST.

Pues ya hemos visto cómo recoger el valor de una variable enviada por formulario desde nuestro controlador.

Recorrer todas las variables POST

Veamos otro ejemplo en el que recorreremos todas las variables de un formulario. Tenemos el mismo formulario.

Formulario

<form action="/users/saveUser" method="post">
  <label for="Name">Name</label>
  <input type="text" name="Name" placeholder="Name" />
  <label for="Age">Age</label>
  <input type="text" name="Age" placeholder="Age" />

  <input type="hidden" name="filter" value="name" />
  <input type="submit" value="Send" />
</form>

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

Controlador

<?php namespace App\Controllers;

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

/**
 * Class Users
 *
 * @package CodeIgniter
 */

class Users extends BaseController
{
  private $usersModel;

  /**
   * Constructor.
  */

  public function __construct()
  {
    $this->usersModel = new UsersModel();
  }

  /**
   * List users
   */

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

    $data = [
      'parameters' => $parameters
    ];

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

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

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

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

Name: Toni
Age: 42

Son ejemplos in mucho sentido en las acciones que realizan. Sólo se pretende que veáis cómo utilizar variables POST en los controladores de CodeIgniter 4.


Más información

Clase Request en documentación de CodeIgniter 4
CodeIgniter 4 tratar parámetros GET
Tutoriales de CodeIgniter 4