with paginacion not method lengthawarepaginator illuminate exist example does collection bootstrap php validation laravel laravel-5

php - paginacion - Validador personalizado en Laravel 5



paginacion laravel (2)

Pruebe lo siguiente:

  1. Haga una clase de vinculación donde pueda implementar cada regla que quiera extender la clase Validator .
  2. Haga un proveedor de servicios que extienda ServiceProvider .
  3. Agregue su proveedor de validador personalizado en el archivo config/app.php .

Puede crear el enlace en la carpeta Services esta manera:

namespace MyApp/Services; class Validator extends /Illuminate/Validation/Validator{ public function validateFoo($attribute, $value, $parameters){ return $value == "foo" } }

Luego, use un proveedor de servicios para extender el núcleo:

namespace MyApp/Providers; use MyApp/Services/Validator; use Illuminate/Support/ServiceProvider; class ValidatorServiceProvider extends ServiceProvider{ public function boot() { /Validator::resolver(function($translator, $data, $rules, $messages) { return new Validator($translator, $data, $rules, $messages); }); } public function register() { } }

Finalmente, importe su proveedor de servicios en config/app.php manera:

''providers'' => [ ... ... ''MyApp/Providers/ValidatorServiceProvider''; ]

Estoy actualizando mi aplicación Laravel de 4 a 5. Sin embargo, tengo un validador personalizado que no puedo ponerme a trabajar.

En L4, hice un archivo validators.php y lo incluí en global.php usando require app_path().''/validators.php''; .

Intenté hacer lo mismo en L5. Solté un validador en la aplicación / Validators / Validators.php y actualicé mi composer.json .

"files": [ "app/Validators/Validators.php" ]

Sin embargo, ahora no se renderiza nada en ninguna página. ¿Qué he hecho mal?


así que esto es lo que hice al agregar una validación personalizada. esto es para laravel 5.1

  1. Ejecute PHP Artisan make:request MyFormValidationRequest archivo PHP Artisan make:request MyFormValidationRequest se crea en la app/Requests/MyFormValidationRequest.php

Aquí está el código inicial:

<?php namespace App/Http/Requests; use App/Http/Requests/Request; class MyFormValidationRequest extends Request { /** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { return true; } /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { return [ // ]; } }

IMPORTANTE : Cambie el valor de retorno del método authorize() a verdadero, si no está haciendo ninguna autenticación. su valor inicial es falso. de lo contrario, obtienes una página blanca con un mensaje de error "Prohibido".

  1. Agregué una regla bajo las rules() función rules() , esto es lo que parece

    public function rules() { return [ ''activeuntil'' => ''today_onwards'' ]; }

today_onwards es mi nueva validación.

  1. Creé una carpeta llamada ''Servicios'' en la carpeta de la aplicación

  2. Creé un archivo llamado ''ValidatorExtended.php'' en la carpeta App / Services, aquí está el código siguiente:

    <?php namespace App/Services; use Illuminate/Validation/Validator; use Carbon/Carbon; class ValidatorExtended extends Validator { private $_custom_messages = array( "today_onwards" => "The :attribute must be today onwards", ); public function __construct( $translator, $data, $rules, $messages = array(), $customAttributes = array() ) { parent::__construct( $translator, $data, $rules, $messages, $customAttributes ); $this->_set_custom_stuff(); } protected function _set_custom_stuff() { //setup our custom error messages $this->setCustomMessages( $this->_custom_messages ); } protected function validateTodayOnwards( $attribute, $value ) { $now = strtotime(''-1 day''); $valueDateFormat = strtotime($value); if($valueDateFormat > $now){ return true; } else { return false; } } }

Nota: el método validateTodayOnwards es donde pones tu lógica. el nombre del método siempre debe comenzar en "validar" y luego el nombre de su nueva clave de validación, que debe estar en el título del caso,

Otra nota: su clave de validación debe estar separada por un guión bajo y letras pequeñas, en este caso, "hoy_en adelante". el guión bajo debe colocarse antes de todas las primeras letras mayúsculas en el nombre del método. Espero haberlo explicado bien.

El método TodayOnwards es equivalente al nombre de validación de "today_onwards",

otro ejemplo, si creé validateOldPassword, tu clave de validación debería ser "old_password".

  1. app/Providers/AppServiceProvider.php código siguiente en la app/Providers/AppServiceProvider.php dentro boot() método boot() .

    Validator::resolver(function($translator, $data, $rules, $messages = array(), $customAttributes = array()) { return new ValidatorExtended($translator, $data, $rules, $messages, $customAttributes); });

  2. No olvide agregar la siguiente biblioteca, una es la clase Validator y la otra es su propia clase, que es el " ValidatorExtended ".

    use App/Services/ValidatorExtended; use Illuminate/Support/Facades/Validator;

  3. Así es como se ve todo el archivo, [ app/Providers/AppServiceProvider.php ]

    <?php namespace App/Providers; use Illuminate/Support/ServiceProvider; use App/Services/ValidatorExtended; use Illuminate/Support/Facades/Validator; class AppServiceProvider extends ServiceProvider { /** * Bootstrap any application services. * * @return void */ public function boot() { // Validator::resolver(function($translator, $data, $rules, $messages = array(), $customAttributes = array()) { return new ValidatorExtended($translator, $data, $rules, $messages, $customAttributes); }); } /** * Register any application services. * * @return void */ public function register() { // } }

  4. Eso es. hecho. usted creó su propia validación personalizada.

  5. Además, si desea usarlo en su controlador, a continuación se muestra el código:

    class testController extends Controller { public function updatePass(MiscValidation $request){ //code here } }

En lugar de utilizar Request Class, utiliza su propia clase, que es una extensión de la clase Request.