1

画像フィールドを持つコンテンツ タイプがあります。ユーザーはコンテンツを作成し、画像をアップロードできます。アップロードされた画像をユーザーが変更/削除できないようにしたいのですが、ノード編集フォームに画像を表示したままにします。したがって、画像フィールドから「削除」ボタンを無効化/削除するだけです。次のことを (hook_form_alter 経由で) 試しましたが、うまくいきませんでした:

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

以下は機能しますが、画像要素を完全に非表示にします。これは私が求めているものではありません:

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

回避策を見つけるのを手伝ってください。

4

2 に答える 2

1

hook_form_alter および after_build 関数を使用して行うこともできます

// hook_form_alter implementation
function yourmodule_form_alter(&$form, $form_state, $form_id) {
    switch ($form_id)  {
        case 'your_form_id':
            $form['your_file_field'][LANGUAGE_NONE]['#after_build'][] = 'yourmodule_hide_remove_button';
            break;
    }
}

// after_build function
function yourmodule_hide_remove_button($element, &$form_state) {
    // if multiple files are allowed in the field, then there may be more than one remove button.
    // and we have to hide all remove buttons, not just the one of the first file of the field
    // 
    // Array
    // (
    //    [0] => 0
    //    [1] => 1
    //    [2] => #after_build
    //    [3] => #field_name
    //    [4] => #language
    //    [5] => ...
    // )
    //
    // the exemple above means we have 2 remove buttons to hide (2 files have been uploaded)

    foreach ($element as $key => $value){
        if (is_numeric($key)){
            unset($element[$key]['remove_button']);
        } else break;
    }

    return $element;
}
于 2014-09-25T09:12:02.363 に答える