sfDoctrineGuard 플러그인을 사용하면 자동으로 백엔드 관리 기능이 생성되어 시스템 사용자를 편집하고 권한을 할당 할 수 있습니다.Symfony sfDoctrineGuard plugin sfGuardUser 모듈
나는 http://.../backend_dev.php/sf_guard_user/:id/edit
을 방문하여 선택할 수있는 사용 권한을 포함한 사용자 정보를 제공합니다. 권한이 다중 선택 상자로 표시됩니다 기본적으로
은, HTML은 다음과 같습니다
<select name="sf_guard_user[permissions_list][]" multiple="multiple" id="sf_guard_user_permissions_list">
<option value="1">Permission1</option>
<option value="2">Permission2</option>
<option value="3">Permission3</option>
<option value="4">Permission4</option>
</select>
은 내가 선호하는 체크 박스의 목록입니다. 그래서 주변 검색 내가 추가하는 경우 "확장"옵션이 다음 코드로 true로 설정하는 것이 발견 : lib 디렉토리/양식/교리/sfDoctrineGuardPlugin/기본/BasesfGuardUserForm :
'permissions_list' => new sfWidgetFormDoctrineChoice(array('multiple' => true, 'model' => 'sfGuardPermission', 'expanded' => true,)),
코드는이 파일의 일부입니다. class.php. 나는이 파일 (sfDoctrineGuard를 다시 설치해야하는 경우 변경 사항을 덮어 쓸 가능성이 있음)을 편집해야한다고 생각하지 않지만 작동하도록 다른 방법을 생각할 수는 없습니다.
<ul class="checkbox_list">
<li><input name="sf_guard_user[permissions_list][]" type="checkbox" value="1" id="sf_guard_user_permissions_list_1" /> <label for="sf_guard_user_permissions_list_1">Permission1</label></li>
<li><input name="sf_guard_user[permissions_list][]" type="checkbox" value="2" id="sf_guard_user_permissions_list_2" /> <label for="sf_guard_user_permissions_list_2">Permission2</label></li>
<li><input name="sf_guard_user[permissions_list][]" type="checkbox" value="3" id="sf_guard_user_permissions_list_3" /> <label for="sf_guard_user_permissions_list_3">Permission3</label></li>
<li><input name="sf_guard_user[permissions_list][]" type="checkbox" value="4" id="sf_guard_user_permissions_list_4" /> <label for="sf_guard_user_permissions_list_4">Permission4</label></li>
</ul>
은 내가 지금해야하는 것은 자신의 접두사에 따라 권한을 분할 다음과 같이
생성 된 HTML이다. 내가 권한 user_action1, user_action2, file_action1, file_action2라는 이름의 한 예를 들어, 그들은 같이 표시합니다 :
User
checkbox (custom label) Action One
checkbox Action Two
File
checkbox (custom label) Action One
checkbox Action Two
하지만 곳에서 시작하는 아무 생각이 없습니다. 편집 할 템플릿이 있다면 쉽게 될 것입니다. 그러나 Forms 프레임 워크를 다루고 있기 때문에 템플릿이 즉석에서 생성된다는 사실을 이해할 수 있습니다. symonfy 캐시 폴더에서 볼 수 있습니다.
어떻게하면됩니까?
sfWidgetFormDoctrineChoice와 동일한 클래스를 확장하는 자체 sfWidgetFormDoctrineChoicePermission 클래스를 작성하기 시작했지만 원하는 출력을 위해 올바르게 렌더링 기능을 편집하는 데 어려움을 겪고 있습니다. 이 작업에 대한 올바른 방법입니까?
또한 편집 사용자 페이지 (위와 동일)에 sfGuardUserProfile 모델을 통합해야합니다. sfGuardUser 플러그인 모듈의 generator.yml 파일을 편집하고 단순히 sfGuardUserProfile 테이블에서 필드 이름을 추가하면 somwhere를 읽을 수 있습니다. 그것은 작동하지만 슬프게도 그렇지 않습니다.