2016-11-27 8 views
1

Ich versuche, meine eigene benutzerdefinierte Laravel benutzerdefinierte Validierungsregel mit dem Service Provider Weg zu erstellen.Laravel benutzerdefinierte Validierung Rückgabe Methode doesnot exist

kam ich mit dem Follow-up, die im Inneren app/Services/CustomValidator.php

<?php 

namespace App\Services; 

class CustomValidator extends \Illuminate\Validation\Validator { 

    public function __construct($translator, $data, $rules, $messages = array(), $customAttributes = array()) 
    { 
     parent::__construct($translator, $data, $rules, $messages, $customAttributes); 
     $this->setCustomMessages([ 
      'not_empty_string'=> 'The field must not be empty' 
     ]); 
    } 

    public function validateNotEmptyString($attribute, $value, $parameters) 
    { 
     return (bool) preg_match('/""/', $value); 
    } 
} 

?> 

und mein Provider innerhalb der Provider Ordner

<?php 

namespace App\Providers; 

use Validator; 
use Illuminate\Support\ServiceProvider; 
use App\Services\CustomValidator; 

class CustomValidationServiceProvider extends ServiceProvider 
{ 
    /** 
    * Bootstrap the application services. 
    * 
    * @return void 
    */ 
    public function boot() 
    { 
     Validator::resolver(function($translator, $data, $rules, $messages) 
     { 
      return new CustomValidator($translator, $data, $rules, $messages); 
     }); 
    } 

    /** 
    * Register the application services. 
    * 
    * @return void 
    */ 
    public function register() 
    { 
     // 
    } 
} 

gespeichert gespeichert ist, und ich habe den Provider zu meiner config/app.php hinzugefügt

'providers' => [ 

    /* 
    * Laravel Framework Service Providers... 
    */ 
    Illuminate\Auth\AuthServiceProvider::class, 
    Illuminate\Broadcasting\BroadcastServiceProvider::class, 
    Illuminate\Bus\BusServiceProvider::class, 
    Illuminate\Cache\CacheServiceProvider::class, 
    Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, 
    Illuminate\Cookie\CookieServiceProvider::class, 
    Illuminate\Database\DatabaseServiceProvider::class, 
    Illuminate\Encryption\EncryptionServiceProvider::class, 
    Illuminate\Filesystem\FilesystemServiceProvider::class, 
    Illuminate\Foundation\Providers\FoundationServiceProvider::class, 
    Illuminate\Hashing\HashServiceProvider::class, 
    Illuminate\Mail\MailServiceProvider::class, 
    Illuminate\Pagination\PaginationServiceProvider::class, 
    Illuminate\Pipeline\PipelineServiceProvider::class, 
    Illuminate\Queue\QueueServiceProvider::class, 
    Illuminate\Redis\RedisServiceProvider::class, 
    Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, 
    Illuminate\Session\SessionServiceProvider::class, 
    Illuminate\Translation\TranslationServiceProvider::class, 
    Illuminate\Validation\ValidationServiceProvider::class, 
    Illuminate\View\ViewServiceProvider::class, 

    /* 
    * Application Service Providers... 
    */ 
    App\Providers\AppServiceProvider::class, 
    App\Providers\AuthServiceProvider::class, 
    App\Providers\EventServiceProvider::class, 
    App\Providers\RouteServiceProvider::class, 
    Laravel\Spark\Providers\SparkServiceProvider::class, 
    App\Providers\SparkServiceProvider::class, 
    Laravel\Cashier\CashierServiceProvider::class, 

    //custom classes 

    Felixkiss\UniqueWithValidator\UniqueWithValidatorServiceProvider::class, 
    App\Providers\CustomValidationServiceProvider::class 
], 

Der Provider ich hinzugefügt scheint Konflikt mit wi th der Felixkiss Provider als wenn ich versuche

eine Regel wie
private $rules = [ 
       'name' => 'required|unique_with:tests,suite_id', 
       'description' => 'not_empty_string|required', 
       'expected_result' => 'not_empty_string|required', 
       'suite_id' => 'required', 
       'project_id' => 'required', 
      ]; 

ich komme mit dem folgenden Fehler zu überprüfen, die eigentlich eine Methode, auf dem anderen Anbieter. Ich bin mir nicht sicher, was das Problem hier ist, da ich anscheinend alles nach dem Buch gemacht habe.

enter image description here

+2

Sehen Sie, ob dies hilft https://github.com/felixkiss/uniquewith-validator/issues/4 –

+0

Danke, check it out. Hoffentlich hilft das, es zu lösen. – Bazinga777

Antwort

0

ging gerade durch den Kommentar von @Zamrony und die Lösung ist, die uniquewith-Validator zu verlängern und dann rufen dann ist es business as usual.

Ich bin mir nicht sicher, wie perfekt diese Lösung ist, aber es funktioniert für mich.

Verwandte Themen