A free and open-source book on ZF3 for beginners

Translation into this language is not yet finished. You can help this project by translating the chapters and contributing your changes.

9.8. Usar filtros y validadores fuera del formulario

En esta sección daremos un ejemplo de como podemos usar filtros y validadores en nuestro controlador para transformar y revisar los datos extraídos de las variables GET y POST.

Supongamos que implementamos un sistema de intermediación de pagos y necesitamos crear una página web que muestre el historial de pago de una tarjeta de crédito en una determinada fecha. Esta página se puede gestionar por medio una acción paymentHistoryAction() de una clase controladora, el número de tarjeta de crédito y la fecha se extraen de las variables GET. En el método paymentHistoryAction() necesitamos implementar algunas revisiones de seguridad:

Abajo, podemos encontrar el código del método de acción:

<?php
namespace Application\Controller;

use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Zend\Filter\StaticFilter;
use Zend\Validator\StaticValidator;

class IndexController extends AbstractActionController
{
  // An action which shows the history of a credit
  // card operations on certain date.
  public function paymentHistoryAction()
  {
    // Get parameters from GET.
    $cardNumber = (string)$this->params()->fromQuery('card', '');
    $date = (string)$this->params()->fromQuery('date', date("Y-m-d"));

    // Validate credit card number.
    $isCardNumberValid = StaticValidator::execute($cardNumber, 'CreditCard');
    if(!$isCardNumberValid) {
      throw new \Exception('Not a credit card number.');
    }

    // Convert date to the right format.
    $date = StaticFilter::execute($date, 'DateTimeFormatter',
	                              ['format'=>'Y-m-d']);

    // The rest of action code goes here...

	return new ViewModel();
  }
}

Dentro del método de acción, usamos el complemento para controladores params() (líneas 16-17) para capturar dos variables del arreglo super-global $_GET: la variable card (número de tarjeta de crédito) y la variable date (la fecha).

En la línea 20, validamos el número de tarjeta de crédito con la ayuda del validador CreditCard. Si el número de tarjeta no es aceptable, lanzaremos una excepción indicando un error (línea 22).

En la línea 26, usamos el filtro DateTimeFormatter para convertir la fecha al formato correcto.


Top