Можно ли установить флажок модуля на «только чтение»? - PullRequest
2 голосов
/ 05 мая 2009

Я пишу модуль безопасности, чтобы разрешить включение определенных модулей для многосайтовой установки Drupal. Прямо сейчас мы можем легко отключить форму «Модули», используя следующий фрагмент.

Мы бы хотели установить элементы формы только для чтения, а затем включить возможность включать / отключать только подмножество.

function disable_form_fields_form_alter(&$form, $form_state, $form_id) {

    //get handle on drupal user var
    global $user;

    //if we are uid == 1 then we can edit this stuff...
    if($user->uid !=1 && variable_get('osu_update_lockdown',1)==1){

        if ($form_id == 'system_modules'){

            //find all the modules not disabled
            $modules_to_disabled = array_diff_key($form['status']['#options'],     array_flip($form['status']['#disabled_modules']));

            //for each not in our disabled list lets add it in
            foreach($modules_to_disabled as $name => $value){
                $form['status']['#disabled_modules'][] = $name;
            }

            //disable non-checked boxes
            foreach($form['status']['#options'] as $key=>$val){
                $form['status']['#process']['system_modules_disable'][0][]=$key;
            }
            //disable checked boxes
            foreach($form['status']['#default_value'] as $key=>$val){
                $form['status']['#process']['system_modules_disable'][0][]=$val;
            }

            unset($form['buttons']['submit']);

        }
    } 
}

Ответы [ 2 ]

0 голосов
/ 24 июня 2014

Да, вы можете использовать эти # атрибуты , чтобы установить его только для чтения:

'#attributes' => array('readonly' => 'readonly'),

Итак, для вашей формы это примерно так:

$form['status']['#attributes'] = array('readonly' => 'readonly');

Это сделает вашу форму доступной только для чтения.

0 голосов
/ 08 мая 2009

пробовали ли вы использовать свойства # access = = FALSE для элементов формы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...