2013-08-07 3 views
2

컨트롤러에서 fosuserbundle 필드의 유효성을 검사하려고합니다. 양식을 사용하지 않고 요청의 값을 전달하고 있습니다 (jquery 플러그인을 x- 편집 가능으로 사용하고 있습니다). 지금까지이 방법을 시도했지만 올바르지 않거나 비어있는 경우에도 이메일을 저장합니다.FOSUserBundle 컨트롤러의 전자 메일 유효성 검사

$userId = $request->get('pk'); 
    $value = $request->get('value'); 

    $em = $this->getDoctrine()->getManager(); 
    $user = $em->getRepository('AcmeUserBundle:User')->find($userId); 
    if (!$user) { 
     throw $this->createNotFoundException('Unable to find Products entity.'); 
    } 
    $user->setEmail($value); 

    $validator = $this->container->get('validator'); 
    $errors = $validator->validate($user, array('profile')); 

    if (count($errors) > 0) { 
     return new Response(print_r($errors, true), 400); 
    } 

    $this->container->get('fos_user.user_manager')->updateUser($user);  

    return new Response('', 200); 

어디에서 잘못 했습니까?

+0

사용자 엔티티의 프로필 유효성 검사 그룹에 이메일 제약이 포함되어 있습니까? 어쩌면 복사/붙여 넣기로 실수를 했습니까? ... 제품 실체를 찾을 수 없습니까? :) – nifr

+0

전자 메일 필드가 fosuser 사용자 엔터티의 일부이기 때문에 실제로 유효성 검사기 fosuserbundle을 사용하고 있습니다. 그룹 프로필에는 전자 메일의 제약 조건이 포함되어 있습니다. :) – Lughino

답변

4

FOSUserBundle은 "프로필"을 유효 그룹으로 사용하며 소문자 "프로필"은 사용하지 않습니다.

유효성 확인 구성 herehere을 살펴보십시오.

+0

나는 "Profile"또는 "Registration"을 입력하면 "오류 500 : 내부 서버 오류"가 발생합니다. – Lughino

+0

심포니/php/webserver 오류 로그에서 http 500 상태 코드의 원인을 알아 냈습니다. . – nifr

+0

당신이 옳았어요! 내 신인 실수! 왜 나는'print_r' 함수에 객체를 넘기거나'var_dump'가 브라우저를 망가 뜨리고 로그인 할 때마다이 오류가 발생한다는 것을 이해하지 못합니다! '[Thu Aug 08 18:07:31 2013] [오류] [클라이언트 127.0.0.1] PHP 치명적 오류 :/var/www/acme/src /에 134217728 바이트의 메모리 크기 (126095361 바이트 할당 시도) acme/UserBundle/Controller/AdminController.php 98 번 라인 referer : http : // localhost/acme/web/app_dev.php/it/admin /' 순간적으로 나는 값을 가진 루프를 추출하여 문제를 해결했다. 내가 필요로하고 통과하는 사람들. – Lughino

관련 문제