2017-12-03 8 views
0

私はAppServiceProviderにカスタム検証を作成し動作しません:Laravel検証カスタムメッセージは

class AppServiceProvider extends ServiceProvider 
{ 
    public function boot() 
    { 
     Validator::extend('greaterEqual', function($attribute, $value, $parameters, $validator) { 
      $min_field = $parameters[0]; 
      $data = $validator->getData(); 
      $min_value = $data[$min_field]; 
      return $value >= $min_value; 
     }); 

     Validator::replacer('greaterEqual', function($message, $attribute, $rule, $parameters) { 

      return str_replace(':field', $parameters[0], $message); 
     }); 
    } 

    public function register() 
    { 
     // 
    } 
} 

私はカスタム検証メッセージを渡したいではなく働いてフォームを送信した後、私はこのメッセージが表示されます。validation.greater_equalを。

これは、コントローラの私の検証です:

$this->validate($request,[ 
    'quantity' => 'required|min:1|integer|greaterEqual:sale_quantity', 
    'sale_quantity' => 'required|min:0|integer', 
],[ 
    'quantity.greaterEqual' => 'The :attribute number is invalid' 
]); 

私のミスは、何ですか。

答えて

0

が必要だと思います。 :-)

1-私はsale_quantity翻訳を追加しました:

class AppServiceProvider extends ServiceProvider 
{ 
    public function boot() 
    { 
     Validator::extend('greater_equal', function($attribute, $value, $parameters, $validator) { 
      $min_field = $parameters[0]; 
      $data = $validator->getData(); 
      $min_value = $data[$min_field]; 
      return $value >= $min_value; 
     }); 

     Validator::replacer('greater_equal', function($message, $attribute, $rule, $parameters) { 

      return str_replace(':field', trans('validation.attributes.'.$parameters[0]), $message); 
     }); 
    } 

    public function register() 
    { 
     // 
    } 
} 

検証は、コントローラに:私は次のようにコードを編集

/resources 
    /lang 
     /en 
      validation.php 

2-

$this->validate($request,[ 
    'quantity' => 'required|min:1|integer|greaterqual:sale_quantity', 
    'sale_quantity' => 'required|min:0|integer', 
],[ 
    'quantity.greater_equal' => 'The :attribute number is invalid. The value of :attribute must be greater than :field' 
]); 
0

私はあなたが、私は単純なミスを持ったresolver ...

use API\Extensions\Core\CustomLaravelValidator; 

    class CustomValidationServiceProvider extends ServiceProvider { 

     public function boot() 
     { 
      $this->app['validator'] 
       ->resolver(function($translator, $data, $rules, $messages) 
      { 
       return new CustomLaravelValidator(
        $translator, 
        $data, 
        $rules, 
        $messages 
       ); 
      }); 
     } 
    } 
+0

こんにちはアダム、私は問題を解決した。答えてくれてありがとう。 –

+0

解決策は何ですか? –

関連する問題