1

Drupal 7 で、特定のコンテンツに基づいてコンテンツ タイプの標準編集フォームを変更する方法はありますか?

例えば:

チェックボックスのあるコンテンツタイプがあります...チェックボックスをオンにしてフォームを保存すると、このチェックボックスが表示されなくなります...データベースのチェックボックスの値に基づいて、フォームフィールドを非表示にしたい場合フォームを示しています。

会社がプロジェクトを追加したい小さな特定のプロジェクト サイトを構築しています。顧客は特定の手順 (コンテンツのアップロード、情報の提供など) を実行する必要があり、特定の要件を確認できる必要があります。これらはチェックされていないため、表示/編集できないようにする必要があります。

また、表示されるフォーム フィールドはユーザーの役割に依存する必要があり、コンテンツのデータベース エントリに応じてさらに制限されます。

この動作を実現できるモジュールはありますか? 「ルール」と「フィールド/権限」は必要なものに近づいていますが、十分ではありません。それとも、条件に基づいてフォーム フィールドのアクセシビリティを変更するオプションを見逃したのでしょうか?

必要なのは、「IF (VALUEOF(CHECKBOX_1) == TRUE) THEN DO_NOT_SHOW(CHECKBOX_1)」のようなロジックを定義する場所です。

4

3 に答える 3

13

ミハエラが説明したように、hook_form_alter はこれを行う方法ですが、その関数内にどのようなオプションがありますか?

  • フィールドを無効にするだけの場合 (表示されますが、ユーザーは変更できません)、次のように実行できます。

    $form['field_myfield']['#disabled'] = TRUE;

  • 非表示にしたいが、編集前の値を保持するには、次のようにします。

    $form['field_myfield']['#access'] = FALSE;

つまり、それを隠しています(どこかで誰かがそれを提案しているのを見ました):

hide($form['field_myfield']);

実際にはフィールドを非表示にしますが、その後、フォームが保存されると、このフィールドの値が空になったり、検証が失敗したりするため、これを行うのは良い方法ではありません。非表示は、そのフィールドを後で別の場所に個別に印刷する場合にのみ意味があります。

于 2014-01-10T10:11:42.877 に答える
3
function your_module_form_alter(&$form, &$form_state, $form_id){

    switch($form_id) {
    case 'nameOfTheNode_node_form':
        //your code here. check the value from from_state.
    break;
    }
}
于 2013-09-13T07:50:07.273 に答える
0

この場合、モジュールConditional Fields https://www.drupal.org/project/conditional_fieldsを使用します

例: Dependees フィールドに値がある場合、Dependent フィールドは表示/非表示、有効/無効、必須/オプション、チェック/チェック解除のいずれかになります。

于 2016-06-16T02:29:41.053 に答える