내 문제는 사용자 유형을 선택하기 위해 등록 양식에 선택 드롭 다운을 추가하고 싶다는 것입니다. 그러나이 코드는 프런트 엔드에 양식 요소를 표시하지 않습니다. 누군가 코드를보고 그 코드에 어떤 문제가 있는지 알려주세요. 이 요소를 포함하지만 등록 양식에 표시되지 않는 배열을 볼 수 있습니다. 아래 내 코드를 확인하십시오.
<?php
function registration_role_dropdown_form_alter($form, &$form_state, $form_id){
if ($form_id == 'user_register_form') {
/*$query = db_select('role', 'r');
$query->addTag('translatable');
$query->fields('r', array('rid', 'name'));
$query->orderBy('weight');
$query->orderBy('name');
if (!empty($permission)) {
$query->innerJoin('role_permission', 'p', 'r.rid = p.rid');
$query->condition('p.permission', $permission);
}
$result = $query->execute();*/
$form['account']['roles']= array(
'#type' => 'select',
'#title' => t('Register As'),
'#options' => array(
registration_role_dropdown_user_roles()
),
'#description' => t('Select the <em>User type</em> from the dropdown.'),
);
}
}
function registration_role_dropdown_user_roles($membersonly = FALSE, $permission = NULL) {
$query = db_select('role', 'r');
$query->addTag('translatable');
$query->fields('r', array('rid', 'name'));
$query->orderBy('weight');
$query->orderBy('name');
if (!empty($permission)) {
$query->innerJoin('role_permission', 'p', 'r.rid = p.rid');
$query->condition('p.permission', $permission);
}
$result = $query->execute();
$roles = array();
foreach ($result as $role) {
switch ($role->rid) {
// We only translate the built in role names
case DRUPAL_ANONYMOUS_RID:
if (!$membersonly) {
$roles[$role->rid] = t($role->name);
}
break;
case DRUPAL_AUTHENTICATED_RID:
$roles[$role->rid] = t($role->name);
break;
default:
$roles[$role->rid] = $role->name;
}
}
return $roles;
}
?>
$form
변수를 참조로 전달하지 않으므로 변경 사항이 hook_form_alter
구현 호출 수신자에게 다시 전달되지 않습니다 .
변화:
function registration_role_dropdown_form_alter($form, &$form_state, $form_id)
...에
function registration_role_dropdown_form_alter(&$form, &$form_state, $form_id)
$form
매개 변수 앞에 앰퍼샌드를 추가했습니다 .
참고 : Drupal의 규칙은 모듈 파일에서 여는 태그를 닫지 않는 것<?php
입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다