먼저 sfFormPropel 양식의 인터페이스가 일치하지 않는다고 가정 해 보겠습니다. bind()
은 아무 것도 반환하지 않지만 유효성 검사를 실행하면 저장된 객체를 반환하는 save()
과 실제로 isValid()
의 반환 값인 부울을 반환하는 bindAndSave()
이 반환됩니다. 이제는 작동하는 응용 프로그램이 있지만 코드가 옳다고 생각하지 않으며 symfony
에 익숙합니다. 그래서 아마도 누락되었습니다.추가 속성이있는 객체를 저장하는 symfony/propel 양식
생성해야하는 개체에는 양식에 표시되지 않고 모델 외부에 있으며 응용 프로그램에서 처리합니다 (예 : 사용자의 사용자 ID, 개체를 만든 사용자 ID, 외부에서 생성 된 GUID 등).
오른쪽 지금 흐름은 다음과 같다 :
- 양식이 유효하다면
- , 추가 값을 추가하고 형성하도록 결합 유효한 경우
- 검사를 형성하기 위해 요청에서 값을 얻을하고 바인딩 한 번 더
- 가 양식을 저장하고 객체
에게 확실한 대답을 돌려 응용 프로그램 별 추가 할 것 값을 요청에서 검색하지만 값은 양식이 유효하지 않은 경우 응용 프로그램 고유 값을 바인드하는 것이 비효율적 일 수 있으며 데이터베이스 레코드를 생성 할 수 있기 때문에 바인드하는 것이 바람직하지 않습니다. 또한, 게시물 요청과 함께 해당 값을 전달할 수 없으면 응용 프로그램에서만 제공해야합니다.
이제는 모델에서 이러한 작업을 수행해야하지만 데이터가 모델 외부에 있으므로 작업을 모델에 전달해야합니다. 문제는 (bind()
) 이후에 전화하면 이전 데이터가 남아 있고 제출 된 데이터가 남아 있지 않다는 것입니다.
이러한 종류의 후 처리를 구현하는 올바른 방법은 무엇입니까?
둘째 현상금 수상 다른 가치있는 대답
컨트롤러에는 지식이 있습니다. 값 중 하나가 현재 사용자 ID (양식에 쉽게 설정 될 수 있음)이고, 다른 ID는 다른 모델에 대한 호출로 생성되고 검색된 ID입니다. 호출은 제출 된 양식이 유효하지 않음), 다른 모델에서 검색 한 다른 값을 추후에 추가 할 수 있습니다. 질문은 실제로 처리 된 필드에서 유효성 검사를 트리거하지 않고 바운드 개체를 업데이트하는 방법입니다. –
'바인딩 된'객체를 가져 오기 위해'doUpdateObject()'를 호출 해 보았습니까? (내 업데이트 된 답변 참조) –
그것은 작동하며 코드는 훨씬 깨끗합니다. 고맙습니다. processValues ()는 다른 상황에서 유용 할 것입니다. 나는 금요일까지 질문과 현상금을 열어두고, 다른 제안을 환영한다. –