CakePHP - Creación de validadores
El validador se puede crear agregando las siguientes dos líneas en el controlador.
use Cake\Validation\Validator;
$validator = new Validator();
Validando datos
Una vez que hemos creado el validador, podemos usar el objeto validador para validar los datos. El siguiente código explica cómo podemos validar los datos para la página web de inicio de sesión.
$validator->notEmpty('username', 'We need username.')->add(
'username', 'validFormat', ['rule' => 'email','message' => 'E-mail must be valid']);
$validator->notEmpty('password', 'We need password.');
$errors = $validator->errors($this->request->data());
Usando el objeto $ validator, primero hemos llamado al notEmpty()método, que asegurará que el nombre de usuario no debe estar vacío. Después de eso, hemos encadenadoadd() método para agregar una validación más para el formato de correo electrónico adecuado.
Después de eso, hemos agregado la validación para el campo de contraseña con el método notEmpty (), que confirmará que el campo de contraseña no debe estar vacío.
Ejemplo
Realice cambios en el archivo config / routes.php como se muestra en el siguiente programa.
config/routes.php
<?php
use Cake\Http\Middleware\CsrfProtectionMiddleware;
use Cake\Routing\Route\DashedRoute;
use Cake\Routing\RouteBuilder;
$routes->setRouteClass(DashedRoute::class);
$routes->scope('/', function (RouteBuilder $builder) {
$builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([
'httpOnly' => true,
]));
$builder->applyMiddleware('csrf');
//$builder->connect('/pages',['controller'=>'Pages','action'=>'display', 'home']);
$builder->connect('validation',['controller'=>'Valids','action'=>'index']);
$builder->fallbacks();
});
Crear un ValidsController.php archivar en src/Controller/ValidsController.php. Copie el siguiente código en el archivo del controlador.
src/Controller/ValidsController.php
<?php
namespace App\Controller;
use App\Controller\AppController;
use Cake\Validation\Validator;
class ValidsController extends AppController{
public function index(){
$validator = new Validator();
$validator->notEmpty('username', 'We need username.')->add(
'username', 'validFormat', ['rule' => 'email','message' => 'E-mail must be valid']);
$validator->notEmpty('password', 'We need password.');
$errors = $validator->errors($this->request->getData());
$this->set('errors',$errors);
}
}
?>
Crea un directorio Valids a src/Template y bajo ese directorio crea un View archivo llamado index.php. Copie el siguiente código en ese archivo.
src/Template/Valids/index.php
<?php
if($errors) {
foreach($errors as $error)
foreach($error as $msg)
echo '<font color="red">'.$msg.'</font><br>';
} else {
echo "No errors.";
}
echo $this->Form->create(NULL,array('url'=>'/validation'));
echo $this->Form->control('username');
echo $this->Form->control('password');
echo $this->Form->button('Submit');
echo $this->Form->end();
?>
Ejecute el ejemplo anterior visitando la siguiente URL:
http: // localhost / cakephp4 / validación
Salida
Haga clic en el botón enviar sin ingresar nada. Recibirá el siguiente resultado.
Http - Cliente
El cliente http se puede utilizar para realizar solicitudes como GET, POST, PUT, etc.
Para trabajar con el cliente http, agregue lo siguiente:
use Cake\Http\Client;
Trabajemos en el ejemplo para comprender el funcionamiento del cliente HTTP.
Método HTTP GET
Para obtener los datos de dar http url, puede hacer lo siguiente:
$response = $http->get('https://jsonplaceholder.typicode.com/users');
En caso de que necesite pasar algunos parámetros de consulta, se pueden pasar de la siguiente manera:
$response = $http->get('https://jsonplaceholder.typicode.com/users', ["id", 1]);
Para obtener la respuesta, puede hacer lo siguiente:
por normal text data -
$response->getBody();
por Json -
$response->getJson();
por Xml -
$response->getXml()
Ejemplo
Realice cambios en el archivo config / routes.php como se muestra en el siguiente programa.
config/routes.php
<?php
use Cake\Http\Middleware\CsrfProtectionMiddleware;
use Cake\Routing\Route\DashedRoute;
use Cake\Routing\RouteBuilder;
$routes->setRouteClass(DashedRoute::class);
$routes->scope('/', function (RouteBuilder $builder) {
$builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([
'httpOnly' => true,
]));
$builder->applyMiddleware('csrf');
//$builder->connect('/pages',['controller'=>'Pages','action'=>'display', 'home']);
$builder->connect('getData',['controller'=>'Requests','action'=>'index']);
$builder->fallbacks();
});
Crear un RequestsController.php archivar en src/Controller/RequestsController.php. Copie el siguiente código en el archivo del controlador.
src/Controller/RequestsController.php
<?php
namespace App\Controller;
use App\Controller\AppController;
use Cake\Http\Client;
class RequestsController extends AppController{
public function index(){
$http = new Client();
$response = $http->get('https://jsonplaceholder.typicode.com/users');
$stream = $response->getJson();
$this->set('response',$stream);
}
}
?>
Crea un directorio Requests a src/Template y bajo ese directorio crea un View archivo llamado index.php. Copie el siguiente código en ese archivo.
src/Template/Requests/index.php
<h3>All Users from url : https://jsonplaceholder.typicode.com/users</h3>
<?php
if($response) {
foreach($response as $res => $val) {
echo '<font color="gray">Name: '.$val["name"].' Email -'.$val["email"].'</font><br>';
}
}
?>
Ejecute el ejemplo anterior visitando la siguiente URL:
http://localhost/cakephp4/getData
Salida
Haga clic en el botón enviar sin ingresar nada. Recibirá el siguiente resultado.
Método HTTP POST
Para trabajar con la publicación, debe llamar al cliente $ http de la siguiente manera:
$response = $http->post('yoururl', data);
Veamos un ejemplo del mismo.
Ejemplo
Realice cambios en el archivo config / routes.php como se muestra en el siguiente programa.
config/routes.php
<?php
use Cake\Http\Middleware\CsrfProtectionMiddleware;
use Cake\Routing\Route\DashedRoute;
use Cake\Routing\RouteBuilder;
$routes->setRouteClass(DashedRoute::class);
$routes->scope('/', function (RouteBuilder $builder) {
$builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([
'httpOnly' => true,
]));
$builder->applyMiddleware('csrf');
//$builder->connect('/pages',['controller'=>'Pages','action'=>'display', 'home']);
$builder->connect('postData',['controller'=>'Requests','action'=>'index']);
$builder->fallbacks();
});
Crear un RequestsController.php archivar en src/Controller/RequestsController.php.Copie el siguiente código en el archivo del controlador. Ignore si ya está creado.
src/Controller/RequestsController.php
<?php
namespace App\Controller;
use App\Controller\AppController;
use Cake\Http\Client;
class RequestsController extends AppController{
public function index(){
$http = new Client();
$response = $http->post('https://postman-echo.com/post', [
'name'=> 'ABC',
'email' => '[email protected]'
]);
}
}
?>
Crea un directorio Requests a src/Template y bajo ese directorio crea un Viewarchivo llamado index.php. Copie el siguiente código en ese archivo.
src/Template/Requests/index.php
<h3>Testing Post Method</h3>
Ejecute el ejemplo anterior visitando la siguiente URL:
http: // localhost / cakephp4 / postData
Salida
A continuación se muestra la salida del código:
Del mismo modo, puede probar el método PUT.
$http = new Client();
$response = $http->put('https://postman-echo.com/post', [
'name'=> 'ABC',
'email' => '[email protected]'
]);