hook__form_alter сброс & форма $ - PullRequest
       1

hook__form_alter сброс & форма $

0 голосов
/ 10 ноября 2010

Я делаю некоторый доступ к контенту с помощью hook_form_alter, поскольку есть проблемы с использованием hook_access с типами контента, определенными вне вашего модуля. Если у пользователя нет доступа, я устанавливаю сообщение в верхней части страницы и не хочу выводить форму. У меня есть следующий код.

function mymodule_form_alter(&$form, $form_state, $form_id) {
    switch ($form_id) {
        case 'cmyformm':  
            dsm($form);
           $from = null;
            dsm($form);
            drupal_set_message('You do not have access to this page');
            break;
     }
}

Однако dsm возвращает ту же информацию для $ form, даже если я установил ее на нуль. Как мне отобразить не форму, а сообщение?

Ответы [ 3 ]

2 голосов
/ 10 ноября 2010

Контроль доступа не должен выполняться на уровне формы.Контроль доступа должен быть реализован с помощью hook_access или в аргументах доступа маршрутизатора.Если вы должны сделать это на уровне формы, используйте user_access () вместе с определенными ролями, которые у вас есть.

2 голосов
/ 10 ноября 2010

Я не совсем понимаю вопрос, но для начала вы устанавливаете $fROm в ноль, а не $fORm.Установка на ноль или просто выполнение unset($form); должны помочь.

0 голосов
/ 10 ноября 2010

В дополнение к опечатке, указанной @zeroFIG, вы действительно неправильно выполняете эту проверку доступа. Я использовал модуль node_example с успехом на всех типах узлов - ни один не был определен в том же модуле, что и hook_access. Посмотрите здесь: http://api.drupal.org/api/examples/node_example--node_example.module/6

...