우리는 엔티티를 관리하기 위해 Symfony 2.3과 Doctrine을 사용하고 있습니다.Symfony2 - 엔티티를 설정하여 속성이 "읽기 전용"이되도록
사용자가 Symfony 양식 빌더를 사용하여 평상시처럼 만들 수있는 "작업"이라는 엔티티가 있고 Doctrine을 사용하여 유지할 수 있다고 가정합니다. "작업"은 예를 들어 특정 날짜에 일부 이메일을 보내는 명령 일 수 있습니다. "작업"에 "상태"라는 속성이 있다고 가정합니다. 올바르게 작성된 "타스크"는 "준비 됨"상태 일 수 있습니다.
cron 작업은 정기적으로 symfony Custom 명령을 호출하여 처리가 필요한 "작업"이 있는지 확인합니다 (즉, "준비 됨"상태). 발견되면 작업을 수행 한 다음 엔티티를 업데이트합니다 상태가 "완료 됨"입니다.
작업이 처리되고 상태가 "완료"로 설정되면 엔티티를 효과적으로 "읽기 전용"으로 만들 수있는 방법이 있습니까? 이것으로, 사용자는 여전히 태스크의 세부 사항을 볼 수 있지만 양식을 사용하여 해당 특성을 변경할 수는 없다는 것을 의미합니다. 사용자가 특정 작업에 대한 "편집"양식을 탐색 할 수 있고 세부 사항을 읽는 동안 cron 작업이 작업을 처리하고 작업의 "상태"속성을 업데이트 할 수 있음을 명심하십시오. 그러면 사용자가 제출할 수 있습니다 폼이 이미 처리되었다는 것을 알지 못하고 폼 핸들러가 엔티티를 유지하려고 시도 할 수 있습니다. 아마도 "상태"를 다시 "준비"로 설정합니다. 그러면 다음 번에 cron이 다시 처리 될 것입니다. 직업이 돌아갑니다.
그러나 상태가 "완료"로 설정되면 작업이 읽기 전용으로 설정된 경우 양식 제출이 효과가 없습니다.
이 엔티티의 양식을 직접 제작했거나 sonata-admin과 같은 것을 사용하고 있습니까? – phpisuber01
우리는 심포니 폼 빌더를 사용하여 직접 폼을 구현합니다. –
각 엔티티 세트 메소드에 대해 status = Completed에 대한 체크를 추가하기 만하면됩니다. 간단하고 당신은 그것을 변경할 수있는 다운 스트림에 대해 걱정할 필요가 없습니다. Task 객체에 readonly라는 새로운 속성을 추가하여 좀 더 융통성있게 사용할 수도 있습니다. – Cerad