2017-12-06 1 views
1

validation.xml에 정의 된 유효성 검사 규칙에 대해 임의의 암호를 검사하는 방법을 알고 싶습니다. 나는 admin 사용자가 다른 admin 사용자를 만들 수있는 admin 페이지를 만들었습니다. 익명 사용자가 /register 페이지에서 자신의 계정으로 등록 할 때 사용하는 것과 동일한 규칙을 사용하여이 사용자의 유효성을 검사하고 싶습니다. 위에서 볼 수 있듯이이 규칙은 validation.xml에 정의되어 있습니다. 이 같은 직접 암호를 기능을사용자 관리자로 만든 사용자의 암호를 어떻게 확인합니까?

$userManager = $container->get('fos_user.user_manager'); 
$user = $userManager->createUser(); 
$user->setPlainPassword('1'); 
$arrayOfErrors = functionThatValidatesUserPassword($user); 

또는 전화 :

그래서 기본적으로 내가 이런 일을하고 싶지

$arrayOfErrors = functionThatValidatesUserPassword('1'); 

내가 여기 functionThatValidatesUserPassword를 교체 사용해야합니까?

나는 유효성 검사기 서비스가 작동 할 수 있습니다 생각하지만 난

$validator = $this->get('validator'); 
$errors = $validator->validate($user); 
print_r($errors);exit; 

을하려고 할 때 난 그냥 오류의 빈 목록을 가져옵니다. /register 페이지에 같은 비밀번호가있는 계정에 등록하면 "암호가 너무 짧습니다."라는 오류 메시지가 나타납니다.

저는 Symfony 3.4와 FosUserBundle 2.0을 사용하고 있습니다.


내 질문에 대한 답을 검색하는 동안

, 나는 validation.xml 파일에 정의 된 규칙을 재정의하는 방법을 설명하는 다음과 같은 두 가지 게시물을 발견했다.
  • fosuserbundle password validation
  • FOSUserBundle - Validation for username, password or email fields
  • 나는 유효성 검사 규칙을 재정 계획,하지만 지금은 그냥 FosUserBundle와 함께 제공되는 내장 된 규칙을 사용하여 암호를 유효성을 검사 할

      .

    +0

    . 'createUser()'가 Entity를 리턴한다고 가정하면 validator service *는 작동해야합니다. 어떤 SF 버전을 사용합니까? –

    +0

    파일 validation.xml 사용자 정의에서 생성 한 규칙을 사용하여 올바른 졸린있어 실수로 내 마지막 코멘트를 삭제 @bangbambang

    $userManager = $this->get('fos_user.user_manager'); $user = $userManager->createUser(); $user->setPlainPassword('1'); $validator = $this->get('validator', null, array("Registration")); $errors = $validator->validate($user); 
    bangbambang

    +0

    @bangbambang Symfony 3.4, FosUserBundle 2.0 –

    답변

    0

    문제점에 대한 해결책을 찾았습니다. FOSUserBundle에 내장 된 validation.xml의 제약 조건은 validation groups입니다. 기본적으로 validate 함수는 어떤 그룹에도 속하지 않는 제약 조건에 대해서만 유효성을 검사합니다. 검사 할 제약 조건을 포함하는 그룹의 배열을 취하는 validate 함수의 세 번째 매개 변수가 있습니다. 따라서 확인하려는 제약 조건이 포함 된 그룹을 전달하면됩니다. 예를 들어, 암호 필드는 Registration, Profile, ResetPassword, ChangePassword 그룹에 속합니다. 내 코드는 다음과 같습니다 있도록 등록 그룹을 사용 :

    예 즉, 미안
    관련 문제