두 개의 별도 컨텍스트에서 폼 클래스를 사용하고 있습니다. 둘 다 새 레코드를 만들고 해당 레코드를 편집하는 것입니다. URL 필드가 고유한지 확인하기 위해 다음과 같이 게시 유효성 검사기를 설정했습니다.sfValidatorDoctrineUnique 업데이트/편집 컨텍스트에서
$this->validatorSchema->setPostValidator(new sfValidatorAnd(array(
new sfValidatorDoctrineUnique(array('model' => 'Page', 'column' => array('url')), array('invalid' => 'This URL already exists.'))
)));
새 레코드를 만들 때 유효성 검사기는 훌륭하게 작동합니다. 그러나 기존 레코드를 편집 할 때 자체를 중복으로 탐지하므로 오류가 발생합니다. 즉, 레코드를 편집하지만 URL을 변경하지 않으면 중복 오류가 발생합니다.
이것은 일반적인 문제이기 때문에 Symfony에서이 문제를 처리하는 방법이 궁금합니다. 기본적으로 나는 그것이 저장 될 때 (중복이 존재하지 않을 때) 자체를 무시하고 싶지만 여전히 실제 복제본이 존재하지 않도록하기 위해 사후 - 유효성 검사기를 실행한다.
톰, 내가 찾은 해결책을 알려주세요 문제. 감사. – tipu
내 솔루션을 찾았습니다 : sfValidatorDoctrineUnique 첫 번째 매개 변수는 'primary_key'키가 있어야하며 값은 테이블의 기본 키이어야합니다. 그런 다음 이름이 기본 키와 일치하는 양식의 값을 가지고 있는지 확인해야합니다. 그래서 만약 당신이 Id 3을 가진 모델 페이지를 편집한다면 필요합니다. 마지막으로 primary_key 열을 내 양식에도 넣으므로 $ this-> setValidator ('id', new sfValidatorString (array ('required'=> true))). 모두 3 개의 파일을 변경하면 작업이 완료됩니다. – tipu