登録後にフィールドを非表示または無効にする


8

ユーザー登録ページに、アカウント登録後に変更してはならないフィールドが1つあります。非表示にするか無効にする必要があります。どのモジュールがこれを行うことができますか?


回答:


4

フィールド権限モジュールを試すことができます

特徴

  • ノードだけでなく、任意のエンティティのフィールド権限を有効にします。
  • 役割ベースのフィールド権限により、ユーザーのアクセス権に基づいてさまざまな表示をパターン化できます。
  • 作成者レベルの権限により、エンティティの所有者が誰であるかに基づいて、フィールドを表示および編集できます。
  • 各フィールドの権限は、デフォルトでは有効になっていません。代わりに、管理者は、この機能が必要なフィールドに対してこれらの権限を明示的に有効にすることができます。

同じフィールドの場合、ユーザーの作成と編集をどのように区別できますか?できないと言っているのではありません。本当に知りたいです。そして、OPもそうだと思います。
Mołot

これは、役割ベースのフィールド許可となり、匿名に対してのみ許可を与える必要があります(この条件がこのケースで機能するかどうかは不明です)
Bipin K

8

カスタムモジュールで実行する場合

my_module_form_user_profile_form_alter(&$form, &$form_state) {
  // Since it is on registration form, field might be reqruied.
  $form['your_field']['#required'] = FALSE;
  $form['your_field']['#access'] = FALSE;
}

ユーザーの作成と編集をどのように区別できますか?
DRUPWAY、2015

2
@Smalution登録フォームの必要はありmy_module_form_user_register_form_alterませんmy_module_form_user_profile_form_alter。そうではありません。
Mołot

1
フックはhook_form_FORM_ID_alter FORM_IDで、登録と編集は異なります
arpitr

はい、わかった。ユーザーがフォームID「user-register-form」を登録したときと、ユーザーがフォームID「user-profile-form」を通常に編集したときを確認しました。
DRUPWAY、2015

はい、予想どおり:)
arpitr 2015

1

このコードで試してください:

function MODULENAME_form_alter(&$form_state, $form_id){
  $form[$field]['#access'] = FALSE;
  $form[$field]['#disabled'] = TRUE;
  }

2
説明のいくつかの単語を追加してください。
Mołot

$ form ['field_name'] ['#disabled'] = TRUE; も動作します。
ピニュエフ2017

1

匿名ユーザーのみのフィールド可視性プロパティを作成します。そのため、値は登録時に保存されます。その後、誰もそのフィールドにアクセスできません。フィールド許可モジュールをインストールすると、このオプションは匿名ユーザーのみに適用されることがわかります。


1
function module_form_alter(&$form_state, $form_id) {
 if (isset($form['title'])) {
    $form['title']['#required'] = FALSE;
    $form['title']['#type'] = 'value';
  }
}

0

を使用してみてhook_form_alterください。以下の例を参照してください。

function MODULENAME_form_alter(&$form_state, $form_id){
      global $user;
      //$form_id :: user detail edit form id
      if($user->uid != 0 && $form_id == "required_form_id"){
         //$field :: requied field name
          $form[$field]['#access'] = FALSE;

      }
   }

0

このコードをカスタムモジュールに配置すると、フィールドは新しいコンテンツで使用できますが、編集できなくなります。

if ($form_id == 'YOUR_FORM_ID') {
//dsm($form);

// for user form use '#user' instead of '#node' and uid instead of nid
if (isset($form['#node']) && isset($form['#node']->nid)){

    // Prevent editing a field once the node has been created
    // hiding the field entirely on the edit form.
    $form['field_name']['#access'] = FALSE;

    // disable update field on the edit form (gray color).
    $form['field_name']['#disabled'] = TRUE;
}

}

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.