유기 그룹에 대한 group_audience와 같은 양식의 필드에 대한 액세스를 숨기거나 방지하는 방법


9

이것은 그룹 문제 필드 또는 양식에서 게시 설정과 같은 필드를 숨기려고 할 때 defaut 값이더라도 필드의 두 세트를 모두 null 값으로 유효성을 검사 할 때 올바르게 선언되었습니다.

보이지 않는, #access, unset hidden 아무것도 작동하지 않았습니다! 현재 프로젝트 사용자의 경우 주소 또는 그림과 같이 당시의 일부 프로필 만 편집 할 수 있기 때문에 매우 문제가됩니다. 따라서 그룹 청중을 숨기면 사용자가 모든 그룹에 속하게됩니다. 편집하다.

아래 코드를 사용 하여이 필드를 숨기고 사용자를 그룹에 유지했습니다.

$variables['user_edit_about']['group_audience']= $temp['group_audience'];       
$variables['user_edit_about']['group_audience']['#prefix'] = '<div style="display:none;">';
$variables['user_edit_about']['group_audience']['#suffix'] = '</div>';

누구든지 이것을 달성하는 더 좋은 방법을 생각할 것입니까?

감사


이 답변은 사용이 여전히 DOM 조작으로 값을 변경할 수 있기 때문에 완벽하지 않습니다
iStryker

답변:


6

편집하다:

알았어. 알아 냈어. 이것을 사용자 정의 모듈에 넣으십시오.

function example_form_alter(&$form, &$form_state, $form_id) {
    if($form_id == 'story_node_form') {
        $form['title']['#value'] = 'hot stuff';
        $form['title']['#access'] = FALSE;

    }
}

그러면 스토리 노드의 제목이 '핫 스터프 (hot stuff)'로 설정되며 #access = FALSE; 때문에 페이지에 렌더링되지 않습니다.

hook_form_alter () 안에 더 세분화 제어를 추가 할 수 있습니다

  global $user;

  // Check to see if $user has does not have the administrator role.
  if (!in_array('administrator', array_values($user->roles))) {
    $form['title']['#access'] = FALSE;
  }

이것은 Drupal 6 & 7에서 작동합니다.

기존 답변 (무시) ​​:

내가 이런 식으로한지 오래되었으므로 잘못했을 수 있습니다. [#value]양식 항목 을 설정하면 양식에 표시되지 않습니다.

Drupal 6 hook_form_alter()에서 사용자 정의 모듈 로이 작업을 수행했습니다 . Drupal 7에서 작동하는지 모르겠으며 전처리 기능으로 수행 할 수 있는지 모르겠습니다.


귀하의 답변에 감사드립니다. 불행히도 제 경우에는 작동하지 않았지만 양식 필드는 이미 편집 양식이므로 사전에 # 값이 있습니다
silkAdmin

@silkAdmin 새로운 편집 내용을 참조하십시오
iStryker

Stryker는 시간을내어 시간을내어 주셔서 감사합니다. 위의 기술자가 작동하지만 필드를 숨길 수는 있지만 제출시 기본값도 고려되지 않는 것 같습니다. 그래서 나는 모든 프로파일 편집시 사용자가 여전히 그룹에서 쫓겨납니다. 지금까지는 #prefix # 접미사 트릭 만 정상적으로 작동하는 것 같습니다.
silkAdmin

$ form [ 'title'] [ '# value'] = $ form [ 'title'] [ '# default_value']
iStryker

5

'element-hidden'CSS 클래스를 양식 요소에 추가 할 수도 있습니다.

$form['user_edit_about']['group_audience']['#attributes']['class'][] = 'element-hidden';

iStryker가 이전에 언급했듯이 DOM 조작을 통해 값을 변경할 수 있습니다. 그러나 이것은 양식 필드 (또는 다른 렌더링 요소)를 숨길 수있는 좋은 방법입니다. element-hidden클래스에 정의되어 있습니다 system.base.css.


버디, 날 구해 줬어 감사. 내가 본 다른 모든 방법은 양식 자체의 요소를 출력하지 않습니다. 제 경우에는 해당 요소가 형식이 될 것으로 예상하는 contrib 모듈에서 양식 요소를 숨기고 싶습니다. 그렇지 않으면 제대로 작동하지 않습니다. CSS 수정은 원하지 않는 요소를 숨기지 만 모든 것이 여전히 작동합니다. 또한 이것이 "해커 방지"가 아니며 필요한 모든 경우에만 신뢰할 수있는 편집기 사용자에게 제공하는 인터페이스를 단순화하기 만하면됩니다.
Mario Awad
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.