iNFerNo 21 мая 2013 в 14:08 Нужно при создание ноды давать возможность добавлять значение полю, а при редактирование своего и чужого естественно материала (ноды) не давать возможности изменять уже введеное поле. Drupal7 Есть вопрос Решение проблем Блог Войдите или зарегистрируйтесь, чтобы отправлять комментарии
q2_faith 22 мая 2013 в 0:57 проверяете есть ли значение в поле, если есть, то http://api.drupal.org/api/drupal/developer!topics!forms_api_reference.ht... если пустое поле, то ничего не меняете
iNFerNo 22 мая 2013 в 11:22 что то не хочет фурычить.... <?phpif ($form_id == 'funding_node_form') { if ($form['field_price_remuneration'][und][0][value] == '') { $form['field_price_remuneration'][und][0][value]['#disabled'] = TRUE; } else { $form['field_price_remuneration'][und][0][value]['#disabled'] = FALSE; } } ?>
iNFerNo 22 мая 2013 в 14:07 Я попробовал просто сделать так $form['field_price_remuneration'] = array( '#disabled' => TRUE, ); это убирает с формы поле. а нужно что бы оно было но было отключенным.
iNFerNo 22 мая 2013 в 14:22 вопщем решил так $form['field_price_remuneration']['und']['0']['value']['#attributes']['disabled'] = TRUE;
iNFerNo 22 мая 2013 в 14:49 хотя не оч работает и так не пашет......... <?phpfunction mymodule_form_alter(&$form, $form_state, $form_id) { if (arg(0) == 'node' && arg(1) == 'add') { if ($form_id == 'funding_node_form') { $form['field_price_remuneration']['und']['0']['value']['#attributes']['disabled'] = FALSE;}}?>
iNFerNo 22 мая 2013 в 14:56 решил задачу более внимательным надо быть. <?phpif (arg(0) == 'node' && arg(2) == 'edit') { $form['field_price_remuneration']['und']['0']['value']['#attributes']['disabled'] = TRUE; }?>
iNFerNo 22 мая 2013 в 16:46 <?phpglobal $user;$user_id = $user->uid; if (arg(0) == 'node' && arg(2) == 'edit' && $user_id == 1) { $form['field_price_remuneration']['und']['0']['value']['#attributes']['disabled'] = TRUE; }?> хочется ограничить ролью юзера... что-то не срастается.... прошу помощи. спасибо..........
q2_faith 22 мая 2013 в 17:41 "iNFerNo" wrote: хочется ограничить ролью юзера... что-то не срастается.... прошу помощи. спасибо.......... ну так укажите роль, а не айдишник
iNFerNo 23 мая 2013 в 10:27 и такое не хочет выполняться... <?phpfunction mymodule_form_alter(&$form, $form_state, $form_id) { global $user; if ($user->uid == 1){ if (arg(0) == 'node' && arg(2) == 'edit') { $form['field_price_remuneration']['und']['0']['value']['#attributes']['disabled'] = TRUE; } }}?> для суперадмина работает как надо. мне требуется для страницы редактирования ноды для всех пользователей (текущего) у которых есть определенная роль например её id 3 disabled для поля
q2_faith 23 мая 2013 в 10:47 установите devel, включите его после <?phpglobal $user;?> напишите <?phpdpm($user);?> и тогда увидите как вывести роль
Mitriy-Bug 1 декабря 2017 в 9:18 Для восьмой версии для отключения редактирования поля по роли: <?phpfunction hook_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) { //Отключаем редактирование поля "body" для роли "Роль" if ($form_id == 'ID формы') { $user = \Drupal::currentUser(); $uid = \Drupal::currentUser()->id(); $roles = $user->getRoles(); if (in_array('Роль', $roles)) {$form['body']['#attributes']['disabled'] = TRUE; } }}?>
Комментарии
hook_form_alter()
Это понятно, но побольше бы информации
проверяете есть ли значение в поле, если есть, то http://api.drupal.org/api/drupal/developer!topics!forms_api_reference.ht...
если пустое поле, то ничего не меняете
что то не хочет фурычить....
<?phpif ($form_id == 'funding_node_form') {
if ($form['field_price_remuneration'][und][0][value] == '') {
$form['field_price_remuneration'][und][0][value]['#disabled'] = TRUE;
}
else {
$form['field_price_remuneration'][und][0][value]['#disabled'] = FALSE;
}
}
?>
девел в помощь
девел сложный. пытался как то...
Я попробовал просто сделать так
$form['field_price_remuneration'] = array(
'#disabled' => TRUE,
);
это убирает с формы поле. а нужно что бы оно было но было отключенным.
вопщем решил так
$form['field_price_remuneration']['und']['0']['value']['#attributes']['disabled'] = TRUE;
хотя не оч работает
и так не пашет.........
<?phpfunction mymodule_form_alter(&$form, $form_state, $form_id) {
if (arg(0) == 'node' && arg(1) == 'add') {
if ($form_id == 'funding_node_form') {
$form['field_price_remuneration']['und']['0']['value']['#attributes']['disabled'] = FALSE;
}
}
?>
решил задачу более внимательным надо быть.
<?phpif (arg(0) == 'node' && arg(2) == 'edit') {
$form['field_price_remuneration']['und']['0']['value']['#attributes']['disabled'] = TRUE;
}?>
<?phpglobal $user;
$user_id = $user->uid;
if (arg(0) == 'node' && arg(2) == 'edit' && $user_id == 1) {
$form['field_price_remuneration']['und']['0']['value']['#attributes']['disabled'] = TRUE;
}?>
хочется ограничить ролью юзера... что-то не срастается.... прошу помощи. спасибо..........
ну так укажите роль, а не айдишник
а как роль вытащить? она по русски называется, id ее 5
и такое не хочет выполняться...
<?phpfunction mymodule_form_alter(&$form, $form_state, $form_id) {
global $user;
if ($user->uid == 1){
if (arg(0) == 'node' && arg(2) == 'edit') {
$form['field_price_remuneration']['und']['0']['value']['#attributes']['disabled'] = TRUE;
}
}
}?>
для суперадмина работает как надо.
мне требуется для страницы редактирования ноды для всех пользователей (текущего) у которых есть определенная роль например её id 3 disabled для поля
установите devel, включите его
после
<?phpglobal $user;?>
напишите
<?phpdpm($user);?>
и тогда увидите как вывести роль
Решил задачу так
<?phpif (!array_key_exists('3', $user->roles)){?>
без девела
Для восьмой версии для отключения редактирования поля по роли:
<?php
function hook_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id) {
//Отключаем редактирование поля "body" для роли "Роль"
if ($form_id == 'ID формы') {
$user = \Drupal::currentUser();
$uid = \Drupal::currentUser()->id();
$roles = $user->getRoles();
if (in_array('Роль', $roles)) {
$form['body']['#attributes']['disabled'] = TRUE;
}
}
}
?>