첫째로, 나는 당신이 내 나쁜 영어로 용서해주기를 바랍니다. 두 번째로, 나는 모든 것이 인터넷에 있다는 것을 안다! 그러나 이번에는 내가 원하는 것을 찾지 못했습니다.symfony 양식을 통해 특정 교리 객체로드하기
나는 현재 심포니 프레임 워크 (V3)와 함께 일하고 있어요 :
여기 문맥의 약간이다.
내가 두 엔티티 가지고 :
오류를 그들의 관계는 일대가 하나 개의 errorCode는 많은 오류에 연결 만 할 수있다
의 errorCode는
하나의 오류는 수 하나의 errorCode가 있습니다.errorCode 테이블은 데이터베이스 관리자가 수동으로 입력합니다.
errorType
->errorCodeType
errorCodeType 테이블의 주 키는 아니지만 내가 오류보고시 입력됩니다 무엇입니까 3 개 개의 서브 코드 필드 (integerType)를 포함 :
나는 중첩 된 formTypes의 folowing 구조를 가지고있다.
내 문제 : 해당하는 errorCode를 인스턴스가 데이터베이스에서 발견되지 않은 경우로드 양식을 제출 한 후 올바른 errorCode를 연결하고 필드에 오류가 발생하는 방법
.
내 제약 :
- 데이터베이스 구조 (I 그 바보 알고 있지만 기존의 데이터베이스와 함께 작동하도록 있는데 정말 인해 어떤 전망을 생성 할 수 없습니다 intolerant 데이터베이스 관리자).
- PHP - 5.6.30 (서버 및 사물을 알고 있음 ...))).
솔루션은 예상 :
- 데이터 변압기 (나는 정말 여러 입력을 사용할 수 있다고 생각하지 않습니다).
- 사용자 정의 유효성 검사기 (글쎄,이 솔루션을 수 있지만 그것을 사용하는 방법을 모르겠다 및 엔터티 필드를 설정하는 방법을 설명하는 모든 문서를 여러 가지 입력을 사용하는 방법을 찾을 수 없습니다.)
- 이벤트 리스너 (동일하지만 실제 사용 사실을 알지 못하고 올바른 필드에 유효성 검사 오류를 표시하는 방법을 알지 못함).
글쎄, 그 중 하나에 해결책이있을 수도 있지만 제대로 사용할 수있는 방법이 없다고 생각합니다.
어쨌든, 불쌍한 내 영어 죄송합니다 다시, 당신의 도움을 주셔서 감사하고 좋은 하루/저녁이있다.
편집 :
내 ERRORTYPE 양식 :
$builder->add('code', CollectionType::class, array(
'entry_type' => ErrorCodeType::class,
'allow_add' => false,
'allow_delete' => false,
'required'=>true,
));
$builder->add('operatorAnnotation', TextType::class, array('label'=>'compléments','required'=>true));
내 errorCodeType 양식 :
$builder->add('aSubcode1', IntegerType::class, array('label'=>'Code de catégorie','required'=>true));
$builder->add('aSubcode2', IntegerType::class, array('label'=>'Code de classe','required'=>true));
$builder->add('aSubcode3', IntegerType::class, array('label'=>'Code de détail','required'=>true));
내 errorCode를 엔티티 :
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="integer")
*/
private $aSubcode1;
/**
* @ORM\Column(type="integer")
*/
private $aSubCode2;
/**
* @ORM\Column(type="integer")
*/
private $aSubCode3;
/**
* @ORM\OneToMany(targetEntity="Error", mappedBy="code", cascade={"persist"})
*/
private $errors;
/*.........More things.......*/
내 오류 엔티티 : 그래서
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $operatorAnnotation;
/**
* @ORM\ManyToOne(targetEntity="ErrorCode", inversedBy="errors", cascade={"persist"})
*/
private $code;
/*.........More things.......*/
양식 유형을 표시 할 수 있습니까? 나는 그 문제가 무엇인지를 정말로 이해하지 못한다. –
더 많은 정보를 가지고 제 질문을 편집했습니다.문제는 다음과 같습니다. 양식을 제출할 때 컨트롤러에서 수행하지 않고 올바른 기존 errorCode를 오류에 연결하는 방법 (해당 양식이없는 경우) errorCode가 발견되었습니다). 협조 해 주셔서 감사합니다. –