У меня работает dpm ($ form). Ницца! Это гораздо лучший способ просмотра данных. Я все еще пытаюсь выяснить, откуда поступает материал, например: местоположение долгота и широта. Слово «долгота» упоминается в 20 разных местах. Я подумал, что это вероятное место для выделения текстового поля для этого поля ввода. пм ($ форма [ '# field_info'] [ 'field_store_latitude'] [ 'location_settings'] [ 'форма'] [ 'поля']);
Какие-нибудь советы о том, как отследить отдельные элементы ввода?
** это не ответ, а дополнение к моему первому вопросу **
привет googletorp -
Я пытаюсь изменить существующие формы, используя hook_form_alter.
После нескольких часов возни, я могу отключить раздел местоположения (долгота / широта) формы, подобной этой:
незадана ($ форма [ 'field_store_latitude']);
Однако отключение только такой широты не работает:
снята с охраны ($ форма [ 'field_store_latitude'] [ '0'] [ '# location_settings'] [ 'форма'] [ 'поля'] [ 'locpick']);
Я не могу найти простой способ связать id и имена в html-источнике с массивами, созданными Krumo.
В этом случае идентификатор называется «edit-field-store-latitude-0-locpick-user-latitude».
Мне нужен рецепт или руководство для идентификации элементов формы в форме Drupal.
Кажется, я нашел решение
<code><?php
// allows you to alter locations fields, which are tricky to access.
// this will require a patch in location module described here:
// http://drupal.org/node/381458#comment-1287362
/**
* Implementation of custom _element_alert() hook.
*/
function form_overrides_location_element_alter(&$element){
// change some location descriptions
$element['locpick']['user_latitude']['#description'] = ' ' . t('Use decimal notation.');
$element['locpick']['user_longitude']['#description'] = ' ' . t('See <a href=!url target=_blank>our help page</a> for more information.', array('!url' => url('latlon_help')));
// or make them disappear entirely
unset($element['locpick']['user_longitude']);
unset($element['locpick']['user_latitude']);
}
/**
* Implementation of form_alter hook.
*/
function form_overrides_form_alter(&$form, $form_state, $form_id) {
switch ($form_id) {
case 'user_profile_form':
// change titles in user profile form
$form['account']['name']['#title'] = t('Login Name');
$form['account']['mail']['#title'] = t('Email');
break;
case 'retailer_node_form':
// let's check what is supposed to be here...
print '<pre>';
//print_r($form);
dsm($form);
print '
';
// это работает, чтобы удалить город
снята с охраны ($ форма [ 'field_myvar_latitude'] [ '0'] [ '# location_settings'] [ 'форма'] [ 'поля'] [ 'город']);
// попробуем свойство #after_build
$ Форма [ '# after_build'] [] = 'mymodule_after_build_mynode';
перерыв;
}
}
function mymodule_after_build_mynode ($ form, $ form_values) {
// Это не будет работать для полей местоположений
вернуть форму $;
} `введите код здесь`