sham/load-parameters-laravel 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

sham/load-parameters-laravel

Composer 安装命令:

composer require sham/load-parameters-laravel

包简介

Carga los parámetros enviados por PUT, POST o GET; y los valida según las reglas asignadas.

README 文档

README

Carga los parámetros enviados por PUT, POST o GET; y los valida según las reglas asignadas en el proyecto.

Esta librería lo primero que hace es cargar los datos enviados a la url, después les asigna un nuevo nombre a cada variable (en caso se haya especificado) y finalmente se valida los datos con el Validador de Laravel. Si todo los datos son correctos, retorna los inputs enviados en un array, sino retornará los errores encontrados.

La librería maneja tres aspectos importantes:

  • Rules: que es un array de reglas que se usará para validar los campos, estan reglas también pueden ser las reglas personalizadas
  • Messages: Son los mensajes que se mostrarán en caso de error.
  • Params: Esta es una variable nueva para la librería, ya que con ella podemos especificar el nombre de una variable para ser enviada por POST GET o PUT, pero nosotros la utilizaremos con otro nombre, es decir, tenemos nuestro paramétro usuario enviado por POST, sin embargo en nuestra tabla o nuestra aplicación necesitamos que se llame user, es por eso que se usa esto, para cambiar de nombre a la variable, así el cliente cuando envíe los datos le saldrá un error con la variable usuario, pero nosotros la utilizaremos como user. Esto sería más usado en API REST ya que el nombre del dato enviado no siempre coincide con la varible que manejamos (en REST nombre_usuario en la aplicación nombreUsuario).

Instalación

La instalación actual es sólo por composer

composer require sham/load-parameters-laravel dev-master

Uso

Actualmente hay tres formas de uso de la librería:

Método 1:

La primera forma de utilizar la librería es usando una clase con los métodos necesarios (rules, messages, params) puede ser una clase Form Validator de Laravel

...
use Sham\LoadParameters\Load;

class MyController extends Controller {

	public function myMethod(Request $request)
	{
		$load = new Load(new App\Http\Requests\MyFormRequest());

		if(!$load->validate($request, 'post')){
			$load->setTypeError(Load::ERROR_ARRAY);
			var_dump($load->getErrors());
		}else{
			extract($load->getInputs());
			echo "welcome $user";
		}
	}
...

La clase MyFormRequest debe tener por lo menos el método rules(); params() y messages() son opcionales.

class MyFormRequest extends FormRequest {

	public function rules()
    {
    	return [
			'user' => 'required',
			'pass' => 'required|min:6',
    	];
    }
...

La forma de llamarlo sería:

curl -d "user=myuser" -d "pass=mipass"  "http://myurl.com/my-function"

y retornaría welcome myuser

Método 2:

La siguiente forma es añadiendo un array con las reglas, mensajes y parámetros a usar:

...
use Sham\LoadParameters\Load;

class MyController extends Controller {

	public function myMethod(Request $request)
	{
		$load = new Load();
		//obligatorio
		$load->setRules([
			'user' => 'required',
			'pass' => 'required|min:6',
		]);
		//opcional
		$load->setParams([
			//variable en tu proyecto => nombre de parametro de envio
			'user' => 'usuario',
			'pass' => 'contrasena',
		]);
        //opcional
		$load->setMessages([
			'user.required' => 'usuario es requerido', 
			'pass.required' => 'contrasena es requerido', 
			'pass.min' => 'Debe ingresar al menos 6 caracteres', 
		]);

		if(!$load->validate($request, 'post')){
			$load->setTypeError(Load::ERROR_ARRAY);
			var_dump($load->getErrors());
		}else{
			extract($load->getInputs());
			echo "welcome $user";
		}
	}
...

La forma de llamarlo sería:

curl -d "usuario=myuser" -d "contrasena=mipass"  "http://myurl.com/my-function"

y retornaría welcome myuser

Método 3:

Si son varios los métodos en tu proyecto y no quieres llenarte de más lineas en tu controlador, puedes usar una clase en la cual tengas todas las reglas de validación por método, para ello primero debes crear una clase en donde creas conveniente y extender de Sham\LoadParameters\MultiAttributes:

...
use Sham\LoadParameters\MultiAttributes;

class MyParameters extends MultiAttributes
{
    public function multiParams()
    {
    	return [
    		'myMethodFirst' => [
    			'user' => 'usuario',
    			'pass' => 'contrasena',
    		]
    	];
    }

    public function multiRules()
    {
    	return [
    		'myMethodFirst' => [
    			'user' => 'required',
    			'pass' => 'required|min:6',
    		],
    		'myMethodSecond' => [
    			'name' => 'required',
    		]
    	];
    }

    public function multiMessages()
    {
    	return [
    		'myMethodFirst' => [
    			'user.required' => 'usuario es requerido', 
				'pass.required' => 'contrasena es requerido', 
				'pass.min' => 'Debe ingresar al menos 6 caracteres', 
    		],
    		'myMethodSecond' => [
    			'name' => 'el nombre es required',
    		]
    	];
    }
...

Después en tu controlador:

use Sham\LoadParameters\Load;

class MyController extends Controller {

	public function myMethod1(Request $request)
	{
		$load = new Load(new \path\to\MyParameters());
		$load->loadMultiAttributes('myMethod1');

		if(!$load->validate($request, 'post')){
			$load->setTypeError(Load::ERROR_ARRAY);
			var_dump($load->getErrors());
		}else{
			extract($load->getInputs());
			echo "welcome $user";
		}
	}
	
	public function myMethod2(Request $request)
	{
		$load = new Load(new \path\to\MyParameters());
		$load->loadMultiAttributes(__FUNCTION__);

		if(!$load->validate($request, 'post')){
			$load->setTypeError(Load::ERROR_ARRAY);
			var_dump($load->getErrors());
		}else{
			extract($load->getInputs());
			echo $user;
		}
	}
...

La forma de llamarlo sería al metodo 1:

curl -d "usuario=myuser" -d "contrasena=mipass"  "http://myurl.com/my-function-1"

y al metodo 2:

curl -d "name=my name"  "http://myurl.com/my-function-2"

统计信息

  • 总下载量: 24
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 4
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2016-02-23

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固