2016-06-16 1 views
0

내가 물어보고 싶은 질문은 속성 이름을 얻는 방법이나 사용자 정의 유효성 검사기로 속성 이름을 표시하는 방법에 관한 것입니다.Laravel Validator (Replacer에서 속성 이름 가져 오기)

$validator = Validator::make($request->all(), $model->get_update_rules()); 
    $validator->setAttributeNames(["attribute_name" => "Beauty Name"]); 

위의 코드는 유효성 검사기를 만드는 데 사용하는 코드입니다.
아래 코드는 사용자 지정 유효성 검사기를 만드는 데 사용하는 코드입니다.

Validator::extend ('custom_validator', function ($attribute, $value, $parameters, $validator) { 
     return false; 
    }); 
    Validator::replacer('custom_validator', function($message, $attribute, $rule, $parameters) { 
     return str_replace(":other", $parameters[1], $message); 
    }); 

$ parameters [1]은 뷰티 이름 대신 attribute_name을 제공합니다. 내 맞춤 검사기에 Beauty Name을 어떻게 표시 할 수 있습니까?

답변

1

마지막으로 내가 Laravel에서 제공하는 유효성 검사기를 확장하여 문제를 해결한다.

위의 코드는 Laravel에서 제공 한 유효성 검사기를 확장하는 CustomValidator를 만드는 데 사용됩니다. 서비스 제공 업체에서 아래 코드를 추가하여 CustomValidator를 해결해야합니다.

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

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

는 내부에이 줄을 추가해야합니다 설정/app.php

App\Providers\ValidatorServiceProvider::class 
0

당신이, 당신은 같은 것을 할 수있는 오류 메시지에 Beauty Name를 표시하려고하는 가정 :

Validator::replacer('custom_validator', function($message, $attribute, $rule, $parameters) { 
    return str_replace([':value'], $parameters, $message); 
}); 

// Error message for failure 
$messages = [ 'custom_validator' => ':attribute is :value' ]; 

// validate input 
$validation = Validator::make(Input::all(), $rules, $messages); 
+0

안녕하세요, 제공 한 코드로 테스트를 마쳤습니다. 그것은 작동하지 않습니다. 뷰티 이름 대신 attribute_name이 계속 표시됩니다. 감사합니다. –

0

나는 사용자 정의 유효성 검사기 클래스를 사용하여 문제를 해결했습니다 '. 비슷한 동작으로 유효성 검사에서 바꿀 수 있습니다. 이 제품은 Laravel 5.3에 있지만, 5.1 및 4에 적용 할 수 있다고 생각합니다.

<?php 

namespace App\Validators; 

use Illuminate\Validation\Validator; 

/** 
* NumbersValidator 
* 
* @package App\Validators 
*/ 
class NumbersValidator 
{ 
    /** 
    * @param array $attribute 
    * @param int $value 
    * @param array $parameters 
    * @param Validator $validator 
    * @return bool 
    */ 
    public function validateDivisibleOn($attribute, $value, $parameters, Validator $validator) 
    { 
     $validator->addReplacer('divisible_on', function ($message, $attribute, $rule, $parameters) use ($validator) { 
      return \str_replace(':other', $parameters[0], $message); 
     }); 

     return ($value % array_shift($parameters) == 0); 
    } 
}