Друзья, здравствуйте!
Я здесь новенький. Надеюсь на ваше понимание.
Хотел бы удалить поле subject в форме создания письма - messages/new - модуля Privatemsg.
Думаю сделать это с помощью hook_theme() и unset в template.php, но не знаю как.
Друзья, здравствуйте!
Я здесь новенький. Надеюсь на ваше понимание.
Хотел бы удалить поле subject в форме создания письма - messages/new - модуля Privatemsg.
Думаю сделать это с помощью hook_theme() и unset в template.php, но не знаю как.
пробуйте $form['subject']['#access'] = false;
Комментарии
<?phpfunction bootstrap_form_privatemsg_new_alter(&$form, &$form_state) {
unset($form['recipient']);
}?>
Спасибо!
Всё понял и таким макаром удалил subject:
<?php
function bartik_form_privatemsg_new_alter(&$form, &$form_state) {
unset($form['subject']);
}
?>
Но проблемка вылезла. После отправки такая ошибка выводится:
«Notice: Undefined property: stdClass::$subject in privatemsg_new_validate() (line 541 of /sites/all/modules/privatemsg/privatemsg.pages.inc)»
Не подскажете что нужно править в том файле?
Ну так вы удаляете поле, которое потом проверяется в другой функции, а там его нет - отсюда и ошибка. Нужно делать это в своем модуле и там же перебивать функцию валидации. Не проще ли просто скрыть это поле стилями в данном случае? Или пробуйте $form['subject']['#access'] = false;
Я понял почему это замечание показывается.
Но не думал, что оно будет показываться.
Думал, что все сделано таким обращом, что после использования unset всё будет гладко.
Скрыть поле нельзя. Нужно именно удалить напрочь, чтобы его не было в HTML коде странички. А так бы и вопроса не было, мог стилем css скрыть.
пробуйте $form['subject']['#access'] = false;
Да, ваш вариант работает и всё нормально.
А в чём разница между unset и false именно в данном случае?
Ведь поле полностью удалено как в случае с unset.
unset просто удаляет поле из массива формы, но при этом функция валидации его ожидает, поскольку вы не указали, что к нему нет доступа - https://api.drupal.org/api/drupal/developer%21topics%21forms_api_referen..., http://drupal.stackexchange.com/questions/139404/difference-between-hide...
Это не ошибка, но предупреждение. Попробуйте обновить базу, запустить крон, очистить кэш. Для начала.
В ряде случаев это помогает.
Кэш очистил, крон запустил и базу обновил, но не помогло.
Предупреждение или ошибка - всё одно в данном случае.
Оно ведь отображается , а этого не должно быть.
а как вместо subject выводить последнее сообщение?