@j0k 님의 질문은 중요합니다. 항상 동일한 권한이 필요한 경우 원하는 것을 성취하는 것이 매우 쉽습니다. 권한이 동적이 되려면 솔루션이 약간 까다로워집니다.
앞의 경우 sgGuardUser와 관련된 테이블에 대한 백엔드 작업 (신규 및 수정)에서 사용되는 Form 클래스를 편집해야합니다. (가) sfGuardUserTable.class.php
추가해야합니다에 그런
$this->widgetSchema['user_id']->setOption('table_method' => 'retrieveForPermissionX');
: (관계 열이 user_id
이라고 가정하고 교리를 사용하고 있는지) : You'l 사용자의 목록을 검색 할 책임이 선택 위젯을 편집해야 적절한 쿼리를 준비하는 함수 :
public function retrieveForPermissionX()
{
return $this->createQuery('u')
->innerJoin('u.sfGuardUserPermission up')
->innerJoin('u.Permissions p')
->where('p.name = "PermissionX"')
->orderBy('u.first_name ASC');
}
내가 말했듯이 다른 권한을 사용해야하는 경우 더 까다로워집니다. 기본 사항은 동일합니다. 양식 안의 위젯에 적절한 사용자를 선택해야하지만, 사용 권한을 양식에 어떻게 든 말해야합니다.
자동 생성 된 새 동작 및 수정 동작을 무시해야한다고 생각합니다. URL에 paramater으로 필요한 권한을 통과 (또는 당신이 필요로 주어진 권한에 대한 특정 URL을 사용)하고 동작 내부 폼에 옵션으로 권한을 전달합니다
$this->form = new UserInfoForm(null, array('permissions' => $permissions));
는 그런 다음 적절한 호출이 정보를 사용할 수 있습니다 table 메소드를 선택하거나 위젯에 대한 오브젝트를 검색하는 데 사용될 조회 오브젝트를 전달할 수있는 테이블 메소드에 대한 대안으로 조회 오브젝트를 생성하십시오.
이 * 특정 권한은 동적이어야합니까? – j0k
권한이 동적이 아닙니다. 관련 표에는 특정 권한 (실제로는 전용 응용 프로그램 및 모듈이있는 사용자 유형)에 대한 특정 정보가 있습니다. @Michal의 대답은 좋은 것 같습니다. 내일 다시 확인하겠습니다. 감사 ! –