2012-07-31 2 views
1

Doctrine 1.2 모델의 배열 직렬화 된 버전으로 CRUD 유형 Ajax 요청을 자주 리턴하는 간단한 문제가 있습니다. execute() 결과 다음에 toArray() 메서드를 반환 할 수 있으면 좋겠지 만, 노출하지 않으려는 모델에 대한 데이터가 표시됩니다. 간단한 예가 내 사용자 모델에 있으며 암호와 소금이 표시됩니다. 그것들이 이미 해시 된 값이라는 것을 알지만, JSON 응답으로 반환하지 않을 것입니다.toArray()를 통해 직렬화 할 때 열 숨기기

나는 Doctrine 1.2 매뉴얼을 쏟아 부었지만 내가 원하는 기능을 제공하는 것을 찾지 못했다. 내가 숨기고 싶은 열을 수동으로 설정 해제 한 결과를 반복 할 수 있다는 것을 알았지 만, 간과 한 더 많은 기본 솔루션이 있기를 바라고 있습니다.

답변

1

toArray()을 직접 만드시겠습니까?

이렇게하려면 모든 Base * 클래스에서 상속받은 sfDoctrineRecord 클래스를 확장해야합니다. It is describe in the doc.

configureDoctrine()config/ProjectConfiguration.class.php 안에 넣어야합니다.

class myDoctrineRecord extends sfDoctrineRecord 
{ 
} 

그래서 당신은 쉽게 toArray() 여기에 사용자 정의 추가 할 수 있습니다 :

은 그럼 당신은 같은 클래스해야합니다 그래서

class myDoctrineRecord extends sfDoctrineRecord 
{ 
    public function toArray($deep = true, $prefixKey = false, array $excludeFields = array()) 
    { 
    // do every thing like the original toArray 
    // but when a column match one entry in $excludeFields, don't add it 
    } 
} 

을, 필드의 배열로 toArray() 방법을 사용하는 경우 세 번째 매개 변수는 결과에서 제외됩니다.